Cod sursa(job #2696617)

Utilizator Remus.RughinisRemus Rughinis Remus.Rughinis Data 16 ianuarie 2021 11:03:29
Problema Stramosi Scor 90
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <stdio.h>
#include <stdlib.h>
#define PUTMAX 17

int v[250001][PUTMAX+1]; ///Sunt mai putin de 2^18 stramosi maxim

int main(){
  int n,i,j,m,x,p,put;
  FILE *fin, *fout;

  fin=fopen("stramosi.in","r");
  fscanf(fin,"%d%d",&n,&m);
  for(i=1;i<=n;i++){
    fscanf(fin,"%d",&v[i][0]);
  }

  for(i=1;i<PUTMAX+1;i++){
    for(j=1;j<=n;j++){
      v[j][i]=v[v[j][i-1]][i-1];
    }
  }

//  for(i=0;i<PUTMAX+1;i++){
//    for(j=0;j<=n;j++){
//      printf("%d ",v[j][i]);
//    }
//    printf("\n");
//  }

  fout=fopen("stramosi.out","w");
  for(i=0;i<m;i++){
    fscanf(fin,"%d%d",&x,&p);
    put=PUTMAX;
    while(p>0){
      if(p>= (1<<put)){
        p-=1<<put;
        x=v[x][put];
      }
      put--;
    }
    fprintf(fout,"%d\n",x);
  }
  fclose(fin);
  fclose(fout);
  return 0;
}