Rezultati

Up. imeNalogaJezikRezultatČas oddaje
ayy-2018 Zaletavanje C++ 100/100OK 19. apr '18 @ 18:00

Test Točke Porabljen spomin Porabljen čas Status
#1 14/14 3,035 MiB 0,004 s OK
#2 14/14 3,035 MiB 0,000 s OK
#3 14/14 3,180 MiB 0,004 s OK
#4 14/14 3,043 MiB 0,000 s OK
#5 14/14 3,184 MiB 0,001 s OK
#6 15/15 3,184 MiB 0,000 s OK
#7 15/15 3,211 MiB 0,007 s OK

Ocenjevani program (zaletava.cpp):
#include <iostream>
#include <vector>
#include <algorithm>


using namespace std;

struct avto{
    int index;
    char smer;
    int X;
    int Y;

};

struct trki{
    int prvi;
    int drugi;
    int pot;
};

bool cmp(const trki& a, const trki& b){
    return a.pot < b.pot;
}

int main()
{
    int st_avt, sirina, visina;
    bool nadaljuj = true, trk = false;



    cin >> st_avt >> sirina >> visina;


    vector<avto> polje;
    vector<avto> poljeNov;
    vector<trki> poljeT;
    avto nov;
    trki novT;

    for(int i = 0; i  < st_avt; i++){
        cin >> nov.smer >> nov.X >> nov.Y;
        nov.index = i;
        polje.push_back(nov);
    }

    poljeNov = polje;
    int g, d;

    for(int i = 0; i < st_avt; i++){
        for(int j = i + 1; j < st_avt; j++){
            if(polje[i].smer != polje[j].smer){
                    g = polje[i].smer == 'G' ? i : j;
                    d = polje[i].smer == 'G' ? j : i;
                    if(polje[g].Y < polje[d].Y && polje[d].Y - polje[g].Y == polje[g].X - polje[d].X){
                        novT.prvi = i;
                        novT.drugi = j;
                        novT.pot = polje[d].Y - polje[g].Y;
                        poljeT.push_back(novT);
                    }
            }
        }
    }

    sort(poljeT.begin(), poljeT.end(), cmp);

    for(int a = 0; a < st_avt ; a++){
        if(poljeNov[a].smer == 'G'){
            poljeNov[a].Y = visina;
        }else{
            poljeNov[a].X = sirina;
        }
    }

    int a, b, tempx, tempy;

    for(int i = 0; i < poljeT.size(); i++){
        a = poljeT[i].prvi;
        b = poljeT[i].drugi;

        tempx = poljeNov[a].X;
        tempy = poljeNov[a].Y;

        poljeNov[a].X = poljeNov[b].X;
        poljeNov[a].Y = poljeNov[b].Y;
        poljeNov[b].X = tempx;
        poljeNov[b].Y = tempy;

        for(int j = i + 1; j < poljeT.size(); j++){
            if(poljeT[j].prvi == a)
                poljeT[j].prvi = b;
            else if(poljeT[j].prvi == b)
                poljeT[j].prvi = a;


            if(poljeT[j].drugi == a)
                poljeT[j].drugi = b;
            else if(poljeT[j].drugi == b)
                poljeT[j].drugi = a;
        }


    }

    for(int i = 0; i < poljeNov.size(); i++)
        cout << poljeNov[i].X << " " << poljeNov[i].Y << endl;

    return 0;
}