Cod sursa(job #1430232)

Utilizator sing_exFMIGhita Tudor sing_ex Data 8 mai 2015 00:10:50
Problema Stramosi Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <vector>

using namespace std;

int main()
{
    int n,c,q,p,i,k,l;
    FILE *f,*g;
    f = fopen("stramosi.in","r");
    g = fopen("stramosi.out","w");
    fscanf(f,"%d %d",&n,&c);
    int v[n+1];
    vector <int>s[n+1];
    for (i=1;i<=n;i++) fscanf(f,"%d",&v[i]);
    /*for (i=1;i<=n;i++) {
        p = i;
        q = 1;
        while (p) {
            s[i].push_back(v[p]);
            p = v[p];
        }
    }*/
    for (i=1;i<=c;i++) {
        fscanf(f,"%d %d",&q,&p);
        if (s[q].size() < (unsigned)p) {
            k = s[q].size() + 1;
            l = k==1?q:s[q][k-2];
            while (l && k <= p && v[l]) {
                s[q].push_back(v[l]);
                l = v[l];
                k++;
            }
            if ((unsigned)p > s[q].size()) fprintf(g,"%d\n",0);
            else fprintf(g,"%d\n",s[q][p-1]);
        }
        else fprintf(g,"%d\n",s[q][p-1]);
    }
    fclose(f);
    fclose(g);
    return 0;
}