Pagini recente » Cod sursa (job #1825925) | Cod sursa (job #2267495) | Cod sursa (job #1983797) | Cod sursa (job #2196880) | Cod sursa (job #419831)
Cod sursa(job #419831)
// stramosi2.cpp : Defines the entry point for the console application.
//
//#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <vector>
using namespace std;
int main() {
int n,m,i,j,alcui,nivelul;
FILE *f=fopen("stramosi.in","r");
FILE *g=fopen("stramosi.out","w");
fscanf(f,"%d %d",&n,&m);
//printf("%d %d\n",m,n);
int *inceput=new int[n+1];
int *lungime=new int[n+1];
int *lin1=new int [n+1];
int *vect=new int [(n+1)*n];
if (vect==0) return 1;
int pozc=0, urm,rez;
lin1[0]=0;
for(i=1; i<=n; i++) fscanf(f,"%d",&lin1[i]);//construiesc prima linie a matricei
for (j=1; j<=n; j++) { //construiesc cate o coloana
lungime[j]=0; inceput[j]=pozc;
urm=lin1[j];
while(urm){
vect[pozc++]=urm;
urm=lin1[urm];
lungime[j]++;
}
}
/*for (j=1; j<=n; j++) {
printf("inceput[%d]=%d,lungime[%d]=%d\n",j,inceput[j],j,lungime[j]);
for (i=0; i<lungime[j]; i++) printf("%3d", vect[inceput[j]+i]);
printf("\n");
}
*/
for(i=0; i<m; i++) {
fscanf(f,"%d %d",&alcui,&nivelul);
if(nivelul>lungime[alcui]) rez=0;
else rez=vect[inceput[alcui]+nivelul-1];
//printf("%d\n", rez);
fprintf(g,"%d\n", rez);
}
fclose(f);
fclose(g);
return 0;
}