Cod sursa(job #1014357)

Utilizator bianca1501gavrilescu bianca bianca1501 Data 22 octombrie 2013 16:12:45
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include <fstream>
#define MAXN 250001
#define MAXLOGN 18
int a[MAXLOGN][MAXN];
int main()
{FILE *fin, *fout; 
 fin = fopen("stramosi.in", "r");
 fout = fopen("stramosi.out", "w");
 int n,m;
fscanf(fin, "%d %d", &n, &m);
int p,q;
 for (int i=1;i<=n;i++)
 { fscanf(fin, "%d", &a[0][i]);
  }
 for (int i=1;i<MAXLOGN;i++)
	 for (int j=1;j<=n;j++)
		 a[i][j] = a[i-1][a[i-1][j]];
	 for (int i=0;i<m;i++)
	 { fscanf(fin, "%d %d", &q, &p);
	 for (int k=17;k>=0 && q>0;k--)
		 if (p & (1<<k))
			 q = a[k][q];
		 fprintf(fout,"%d\n", q);
	 }
	 fclose(fin);
	 fclose(fout)
	 return 0;
}