Cod sursa(job #234088)

Utilizator ooctavTuchila Octavian ooctav Data 19 decembrie 2008 22:23:05
Problema Stramosi Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 4.6 kb
 // stramosi.cpp : Defines the entry point for the console application.
//

#include <stdio.h>

int main()
{
	FILE *f1,*f2;
    f1=fopen("stramosi.in","r");
    f2=fopen("stramosi.out","w");
    int a,b,n,m,i;
    int e[250004];
	e[0]=0;
    fscanf(f1,"%d %d",&n,&m);
    for(i=1;i<=n;i++)
    {
                     fscanf(f1,"%d",&e[i]);
    }
    for(i=1;i<=m;i++)
    {
                     fscanf(f1,"%d %d",&a,&b);
                     switch(b&31)
					 {
					 case 1 :
						 {
							a=e[a];
							b--;
							break;
						 }
					 case 2 :
						 {
							a=e[e[a]];
							b-=2;
							break;
						 }
					 case 3 :
						 {
							a=e[e[e[a]]];
							b-=3;
							break;
						 }
					 case 4 :
						 {
							a=e[e[e[e[a]]]];
							b-=4;
							break;
						 }
					 case 5 :
						 {
							a=e[e[e[e[e[a]]]]];
							b-=5;
							break;
						 }
					 case 6 :
						 {
							a=e[e[e[e[e[e[a]]]]]];
							b-=6;
							break;
						 }
					 case 7 :
						 {
							a=e[e[e[e[e[e[e[a]]]]]]];
							b-=7;
							break;
						 }
					 case 8 :
						 {
							a=e[e[e[e[e[e[e[e[a]]]]]]]];
							b-=8;
							break;
						 }
					 case 9 :
						 {
							a=e[e[e[e[e[e[e[e[e[a]]]]]]]]];
							b-=2;
							break;
						 }
					 case 10 :
						 {
							a=e[e[e[e[e[e[e[e[e[e[a]]]]]]]]]];
							b-=10;
							break;
						 }
					 case 11 :
						 {
							a=e[e[e[e[e[e[e[e[e[e[e[a]]]]]]]]]]];
							b-=11;
							break;
						 }
					 case 12 :
						 {
							a=e[e[e[e[e[e[e[e[e[e[e[e[a]]]]]]]]]]]];
							b-=12;
							break;
						 }
					 case 13 :
						 {
							a=e[e[e[e[e[e[e[e[e[e[e[e[e[a]]]]]]]]]]]]];
							b-=13;
							break;
						 }
					 case 14 :
						 {
							a=e[e[e[e[e[e[e[e[e[e[e[e[e[e[a]]]]]]]]]]]]]];
							b-=14;
							break;
						 }
					 case 15 :
						 {
							a=e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[a]]]]]]]]]]]]]]];
							b-=15;
							break;
						 }
					 case 16 :
						 {
							a=e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[a]]]]]]]]]]]]]]]];
							b-=16;
							break;
						 }
					 case 17 :
						 {
							a=e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[a]]]]]]]]]]]]]]]]];
							b-=17;
							break;
						 }
					 case 18 :
						 {
							a=e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[a]]]]]]]]]]]]]]]]]];
							b-=18;
							break;
						 }
					 case 19 :
						 {
							a=e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[a]]]]]]]]]]]]]]]]]]];
							b-=19;
							break;
						 }
					 case 20 :
						 {
							a=e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[a]]]]]]]]]]]]]]]]]]]];
							b-=20;
							break;
						 }
					 case 21 :
						 {
							a=e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[a]]]]]]]]]]]]]]]]]]]]];
							b-=21;
							break;
						 }
					 case 22 :
						 {
							a=e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[a]]]]]]]]]]]]]]]]]]]]]];
							b-=22;
							break;
						 }
					 case 23 :
						 {
							a=e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[a]]]]]]]]]]]]]]]]]]]]]]];
							b-=23;
							break;
						 }
					 case 24 :
						 {
							a=e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[a]]]]]]]]]]]]]]]]]]]]]]]];
							b-=24;
							break;
						 }
					 case 25 :
						 {
							a=e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[a]]]]]]]]]]]]]]]]]]]]]]]]];
							b-=25;
							break;
						 }
					 case 26 :
						 {
							a=e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[a]]]]]]]]]]]]]]]]]]]]]]]]]];
							b-=26;
							break;
						 }
					 case 27 :
						 {
							a=e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[a]]]]]]]]]]]]]]]]]]]]]]]]]]];
							b-=27;
							break;
						 }
					 case 28 :
						 {
							a=e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[a]]]]]]]]]]]]]]]]]]]]]]]]]]]];
							b-=28;
							break;
						 }
					case 29 :
						 {
							a=e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[a]]]]]]]]]]]]]]]]]]]]]]]]]]]]];
							b-=29;
							break;
						 }
					 case 30 :
						 {
							a=e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[a]]]]]]]]]]]]]]]]]]]]]]]]]]]]]];
							b-=30;
							break;
						 }
					 case 31 :
						 {
							a=e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[a]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]];
							b-=31;
							break;
						 }
					 
					 }
					while(a && b)
					{
						a=e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[e[a]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]];
							b-=32;
					}
                     fprintf(f2,"%d\n",a);
    }
    fclose(f1);
    fclose(f2);
	return 0;
}