Cod sursa(job #483629)

Utilizator cosmyoPaunel Cosmin cosmyo Data 9 septembrie 2010 14:49:09
Problema Stramosi Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<fstream.h>
#define NMAX 250005
#define in ifstream fin("stramosi.in")
#define out ofstream fout("stramosi.out")
using namespace std;
long n,a[32][NMAX],t[NMAX],m,w,p;
long str(long k)
{ if(p<w&&t[k]>0)
	{++p;
     return str(t[k]);
	}
	else
 if(p==w)
	 return k;
  else
 if(t[k]==0)
	 return 0;
}
int main()
{in;
 out;
 long P,q,i,j;
  fin>>n>>m;
	  for(i=1;i<=n;++i)
		  fin>>t[i];
 for(i=1;i<=n;++i)
	 a[0][i]=t[i];
 w=1;
 for(i=1;i<=30;++i)
	{w*=2; 
	  for(j=1;j<=n;++j)
	   {p=w/2;
		a[i][j]=str(a[i-1][j]);} 
	}
 for(j=1;j<=m;++j)
	 {fin>>q>>P;
      for(i=0,w=1;i<=30;++i,w*=2)
		  if(P<w)
			  break;
	  p=w/2;
	  w=P;
	  fout<<str(a[i-1][q])<<'\n';
	 }
 fin.close();
 fout.close();
 return 0;
}