Cod sursa(job #1976333)

Utilizator radu.millio15Radu Millio radu.millio15 Data 3 mai 2017 09:30:18
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <iostream>
#include <stdio.h>
using namespace std;
int d[250000][20];
int main()
{
    FILE *fin, *fout;
    int n,m,i,j,ans,put,q,p;
    fin=fopen("stramosi.in", "r");
    fout=fopen("stramosi.out", "w");
    fscanf(fin, "%d%d", &n, &m);
    for(i=1; i<=n; i++)
      fscanf(fin, "%d", &d[0][i]);
    for(j=1; j<=17; ++j)
      for(i=1; i<=n; ++i)
        d[j][i]=d[j-1][d[j-1][i]];

    for(i=1; i<=m; i++)
    {
      fscanf(fin, "%d%d", &q, &p);
      ans=q; put=0;
      while(p)
      {
        if(p&1)
          ans=d[put][ans];
        p>>=1; put++;
      }
      fprintf(fout, "%d\n", ans);
    }
    return 0;
}