Cod sursa(job #475810)

Utilizator aladinaladin aladinn aladin Data 8 august 2010 17:04:56
Problema Stramosi Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <cstdio>
#include <vector>
#define N 250003
using namespace std;

int v[N],nr,c[N];
vector <int> x[N];
vector <int> b[N];
vector <int> tim[N];


void rez (int k)
{
	++nr;c[nr]=k;
	while (!b[k].empty()) 
	{
		int t,p;
		t=tim[k].back(),p=b[k].back();
		tim[k].pop_back();b[k].pop_back();
		if (nr>=p) v[t]=c[nr-p];
	}
	vector<int> :: iterator it;
	for (it=x[k].begin();it!=x[k].end();++it) rez(*it);
	nr--;
}
int main()

{
	int n,m,i,j,a,l;
	
	freopen("stramosi.in","r",stdin);
	freopen("stramosi.out","w",stdout);
	scanf("%d %d",&n,&m);
	for (i=1;i<=n;++i) { scanf("%d",&a); x[a].push_back(i);}
	for (i=1;i<=m;++i) { scanf("%d %d",&l,&a);b[l].push_back(a);tim[l].push_back(i);}
	vector<int> :: iterator it;
	for (it=x[0].begin();it!=x[0].end();++it) rez(*it);
    	
	for (i=1;i<=m;++i) printf("%d\n",v[i]);
	return 0;}