Cod sursa(job #392525)

Utilizator ProcopliucProcopliuc Adrian Procopliuc Data 7 februarie 2010 17:36:28
Problema Stramosi Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
# include <fstream.h>
ifstream f ("stramosi.in");
ofstream g ("stramosi.out");
int v[250005],i,j,n,m,x,s[250005],d[250005],q,r[250005],k;

  struct nod 
  {
	  int info;
	  nod *urm;
  }*a[250005],*p;
  
  struct nod2
  {
	  int info,rez;
	  nod2 *urm;
  }*b[250005],*z;
  
   
    void df (int x)
	{
		nod *p;
		k++;
		v[k]=x;
		z=b[x];
		while (z)
		{
			if (k-z->info>0)
			z->rez=v[k-z->info];
			else
				z->rez=0;
			z=z->urm;
		}
		p=a[x];
		while (p)
		{
			df (p->info);
			p=p->urm;
		}
		k--;
	}



int main ()
{
	f>>n>>m;
	for (i=1;i<=n;i++)
	{
		f>>x;
		if (x==0)
		{
			q++;
			r[q]=i;
		}
		else
		{
		p=new nod;
		p->info=i;
		p->urm=a[x];
		a[x]=p;
		}
	}
	
	for (i=1;i<=m;i++)
		f>>s[i]>>d[i];
	
	for (i=m;i>=1;i--)
	{
		z=new nod2;
		z->info=d[i];
		z->urm=b[s[i]];
		b[s[i]]=z;
	}
	
	for (j=1;j<=q;j++)
		df (r[j]);
	
	for (i=1;i<=m;i++)
	{
		g<<b[s[i]]->rez<<"\n";
		b[s[i]]=b[s[i]]->urm;
	}
	return 0;
}