Rezultati

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

Test Točke Porabljen spomin Porabljen čas Status
#1 14/14 3,180 MiB 0,010 s OK
#2 14/14 3,039 MiB 0,000 s OK
#3 14/14 3,176 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,043 MiB 0,007 s OK
#7 15/15 3,184 MiB 0,001 s OK

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

using namespace std;

pair<int, int> koncnaTocka(int smer, int x, int y, int w, int h) {
    pair<int, int> konc;
    if(smer == 0) {
        konc.first = w;
        konc.second = y;
    }
    else {
        konc.first = x;
        konc.second = h;
    }
    return konc;
}

vector< vector<int> > podatki(3, vector<int>());

bool fun(int a, int b) {
    return podatki[1][a] < podatki[1][b];
}

bool zajeb(pair<int, int> a, pair<int, int> b) {
    return a.first < b.first || a.first == b.first && a.second > b.second;
}

int main() {
    int n, w, h;
    cin >> n >> w >> h;
    for(int i=0; i<n; ++i) {
        char c;
        int x, y, a=0;
        cin >> c >> x >> y;
        if(c == 'G') a = 1;
        podatki[0].push_back(a);
        podatki[1].push_back(x);
        podatki[2].push_back(y);
    }
    vector< vector<int> > rez(2, vector<int>(n, -1));
    for(int i=0; i<n; ++i) {
        if(rez[0][i] != -1) continue;
        int x = podatki[1][i], y = podatki[2][i], smer = podatki[0][i];
        //cout << "lala: " << x << ' ' << y << ' ' << smer << endl;
        vector<int> skupina;
        skupina.push_back(i);
        vector< pair<int, int> > tocke;
        tocke.push_back(koncnaTocka(smer, x, y, w, h));
        for(int j=i+1; j<n; ++j) {
            int a = podatki[1][j], b= podatki[2][j], s = podatki[0][j];
            if(x-a == b-y) {
                skupina.push_back(j);
                tocke.push_back(koncnaTocka(s, a, b, w, h));
            }
        }
        sort(tocke.begin(), tocke.end(), zajeb);
        sort(skupina.begin(), skupina.end(), fun);
        for(int i=0; i<skupina.size(); ++i) {
            rez[0][skupina[i]] = tocke[i].first;
            rez[1][skupina[i]] = tocke[i].second;
        }
    }
    for(int i=0; i<rez[0].size(); ++i) {
        cout << rez[0][i] << ' ' << rez[1][i] << endl;
    }
    return 0;
}