Pagini recente » Cod sursa (job #1684388) | Cod sursa (job #2224055) | Cod sursa (job #2469547) | Cod sursa (job #562859) | Cod sursa (job #475810)
Cod sursa(job #475810)
#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;}