Cod sursa(job #2521632)

Utilizator andra1782Andra Alazaroaie andra1782 Data 11 ianuarie 2020 11:38:19
Problema Stramosi Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <stdio.h>
#define MAX 250000
int t[MAX+1][18],log[MAX+1];
int main(){
  FILE *fin=fopen("stramosi.in","r");
  FILE *fout=fopen("stramosi.out","w");
  int n,m,i,j,p,q,l;

  fscanf(fin,"%d%d",&n,&m);
  for(i=1; i<=n; i++)
    fscanf(fin,"%d",&t[i][0]);
  log[2]=1;
  for(i=3; i<=MAX; i++)
    log[i]=log[i/2]+1;
  for(j=1; j<18; j++)
    for(i=1; i<=n; i++)
      t[i][j]=t[t[i][j-1]][j-1];
  for(i=0; i<m; i++){
    fscanf(fin,"%d%d",&q,&p);
    while(p){
      l=p&(-p);
      q=t[q][log[l]];
      p-=l;
    }
    fprintf(fout,"%d\n",q);
  }
  fclose(fin);
  fclose(fout);
  return 0;
}