Rezultati

Up. imeNalogaJezikRezultatČas oddaje
jam-2018 Prehitevanje C++ 100/100OK 04. okt '18 @ 17:49

Test Točke Porabljen spomin Porabljen čas Status
#1 16/16 3,047 MiB 0,000 s OK
#2 16/16 3,047 MiB 0,000 s OK
#3 17/17 3,195 MiB 0,000 s OK
#4 17/17 4,367 MiB 0,543 s OK
#5 17/17 32,875 MiB 0,000 s OK
#6 17/17 3,129 MiB 0,010 s OK

Ocenjevani program (main.cpp):
#include <iostream>
#include <map>
#include <vector>

using namespace std;

int main() {


    map<string, int> ime_to_i;
    vector<string> imena;
    imena.push_back("");

    int n;
    cin >> n;

    int **tab = new int*[n+2];
    for (int i = 0; i < n + 2; i++) {
        tab[i] = new int[2];
    }
    tab[0][0] = -3;
    tab[0][1] = -3;
    tab[n + 1][0] = -3;
    tab[n + 1][1] = -3;


    for (int i = 1; i < n + 1; i++) {
        string ime;
        cin >> ime;
        ime_to_i[ime] = i;
        imena.push_back(ime);
        tab[i][0] = i - 1;
        tab[i][1] = i + 1;
    }

    int st_kr;
    cin >> st_kr;
    for (int i = 0; i < st_kr; i++) {
        string xime, yime;
        cin >> xime >> yime;

        int xi = ime_to_i[xime];
        int *x = tab[xi];

        int yi = ime_to_i[yime];
        int *y = tab[yi];

        int ypredi = y[0];
        int *ypred = tab[ypredi];

        int xpredi = x[0];
        int *xpred = tab[xpredi];

        int xpoi = x[1];
        int *xpo = tab[xpoi];
    ;
        if (xi == yi || xi == y[0])
            continue;
    ;
        ypred[1] = xi;
        x[0] = ypredi;
        x[1] = yi;
        y[0] = xi;
        xpred[1] = xpoi;
        xpo[0] = xpredi;
    }
    ;
    int *prvi;
    int idx = 0;
    for (int i = 1; i < n+1; i++) {
        int *trenutni = tab[i];
        if (trenutni[0] == 0) {
            prvi = trenutni;
            idx = i;
            break;
        }
    }
    ;
    while (true) {
        cout << imena[idx] << endl;
        idx = prvi[1];
        prvi = tab[idx];
        if (prvi[1] == n + 1) {
            cout << imena[idx] << endl;
            break;
        }
    }







}