Pagini recente » Cod sursa (job #540327) | Cod sursa (job #1304250) | Cod sursa (job #2839427) | Cod sursa (job #2753898) | Cod sursa (job #17600)
Cod sursa(job #17600)
//stramosi
#include<stdio.h>
struct pers{
struct pers *urm,*stram;
long nrs,ord;
};
long n,m;
struct pers *fam;
void citire1(void)
{
long i;
struct pers *p,*q;
scanf("%ld %ld\n",&n,&m);
fam=new struct pers;
scanf("%ld",&fam->nrs);
fam->ord=1;
fam->urm=NULL;
p=fam;
for(i=2;i<=n;i++)
{
q=new struct pers;
scanf("%ld",&q->nrs);
q->urm=NULL;
q->ord=i;
p->urm=q;
p=q;
}
}
void legaturi(void)
{
long i;
struct pers *p,*q;
for(p=fam;p!=NULL;p=p->urm)
{
if(p->nrs==0) p->stram=NULL;
else
{
q=fam;
while((q->ord) < (p->nrs))
q=q->urm;
p->stram=q;
}
}
}
void gaseste(void)
{
long i,j,a,b;
struct pers *p,*q;
for(i=1;i<=m;i++)
{
scanf("%ld %ld",&a,&b);
p=fam;
while(p->ord < a)
p=p->urm;
for(j=1;(j<b) && (p!=NULL);j++)
p=p->stram;
if(p!=NULL)
printf("%ld\n",p->nrs);
else printf("0\n");
}
}
int main(void)
{
freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);
citire1();
legaturi();
gaseste();
fclose(stdin);
fclose(stdout);
return 0;
}