Cod sursa(job #71352)

Utilizator M@2Te4iMatei Misarca M@2Te4i Data 10 iulie 2007 12:44:51
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.48 kb
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int n,m,w[300000],a,c,q,h,e[2];

void rezolvare(int &e, int &q)
{
int o=0;
while (q!=c-1 && w[e]!=0)     
      {
      if (q+1==c-1 || w[w[e]]==0)
         {
         printf("%d\n",w[w[e]]);          
         o=1;
         break;
         }
      if (q+2==c-1 || w[w[w[e]]]==0)
         {
         printf("%d\n",w[w[w[e]]]);          
         o=1;
         break;
         }
      q+=3;
      e=w[w[w[e]]];
      }
if (o==0)
   printf("%d\n",w[e]);
}     

void citire()
{
freopen("stramosi.in","r",stdin);
/*scanf("%d%d", &n, &m);
for (long i=1; i<=n; i++)
	scanf("%d", &w[i]);
for (long i=1; i<=m; i++)
	{	
	scanf("%d%d", &a, &c);
	h=0;
	rezolvare(a,h);
	}*/
char s[1024];
fgets(s,1024,stdin);
if(s[strlen(s)-1]=='\n') s[strlen(s)-1]=0;
char *p;
int i=-1;
for(p=strtok(s," "); p; p=strtok(NULL," "))
     {
     e[++i]=atoi(p);
     }
n=e[0];
m=e[1];
fgets(s,1024,stdin);
if(s[strlen(s)-1]=='\n') s[strlen(s)-1]=0;
i=-1;
for(p=strtok(s," "); p; p=strtok(NULL," "))
     {
     w[++i]=atoi(p);
     }
for (long i=1; i<=m; i++)
	{	
    i=-1;
    fgets(s,1024,stdin);
    if(s[strlen(s)-1]=='\n') s[strlen(s)-1]=0;
    for (p=strtok(s," "); p; p=strtok(NULL," "))
        {
        e[++i]=atoi(p);
        }
    h=0;
    a=e[0];
    c=e[1];
    rezolvare(a,h);
    }
fclose(stdin);
}

int main()
{
freopen("stramosi.out","w",stdout);
citire();
fclose(stdout);
return 0;
}