Cod sursa(job #371956)

Utilizator vladiiIonescu Vlad vladii Data 7 decembrie 2009 22:18:34
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <math.h>
using namespace std;
int main() {
    FILE *f1=fopen("stramosi.in", "r"), *f2=fopen("stramosi.out", "w");
    int stra[20][250001], n, m, k, p, i, j;
    fscanf(f1, "%d %d", &n, &m);
    for(i=1; i<=n; i++) {
         fscanf(f1, "%d", &stra[0][i]);
    }
    for(j=1; j<=19; j++) {
         for(i=1; i<=n; i++) {
              if(stra[j-1][i]) {
                   stra[j][i]=stra[j-1][stra[j-1][i]];
              }
              else {
                   stra[j][i]=0;
              }
         }
    }
   for(i=1; i<=m; i++) {
         fscanf(f1, "%d %d", &p, &k);
         j=0;
         while(k && p) {
              if(k%2) {
                   p=stra[j][p];
              }
              j++; k=k>>1;
         }
         fprintf(f2, "%d\n", p);
    }
    fclose(f1); fclose(f2);
    return 0;
}