Cod sursa(job #1727575)

Utilizator benisBenis Mimimus benis Data 11 iulie 2016 10:30:53
Problema Stramosi Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <iostream>
#include <fstream>

using namespace std;

#define NMAX 250000
#define MMAX 300000

//#define _DEBUG

int N, M, PMax = 1;
int Q[MMAX];
int P[MMAX];
int R[MMAX];
int parinti[NMAX+1];
int stramosi[NMAX+1];

int main(int argc, const char * argv[]) {
    fstream fin("stramosi.in", fstream::in);
    fin >> N >> M;
    for (int i = 1; i <= N; i++) {
        fin >> parinti[i];
        stramosi[i] = parinti[i];
    }
    for (int i = 0; i < M; i++) {
        fin >> Q[i] >> P[i];
        if (P[i] > PMax)
            PMax = P[i];
        else if (P[i] == 1)
            R[i] = parinti[Q[i]];
    }
    fin.close();
    
    for (int pas = 2; pas <= PMax; pas++) {
        for (int i = 1; i <= N; i++) {
            if (stramosi[i] != 0)
                stramosi[i] = parinti[stramosi[i]];
        }
        for (int i = 0; i < M; i++)
            if (P[i] == pas)
                R[i] = stramosi[Q[i]];
    }
    
#ifdef _DEBUG
    for (int i = 0; i < M; i++)
        cout << R[i] << "\n";
#else
    fstream fout("stramosi.out", fstream::out);
    for (int i = 0; i < M; i++)
        fout << R[i] << "\n";
    fout.close();
#endif
    return 0;
}