Cod sursa(job #324260)

Utilizator BrEacKRazvan Aurariu BrEacK Data 15 iunie 2009 11:54:54
Problema Stramosi Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<iostream>
using namespace std;

typedef struct str
{
    int n;
    str * par , *par2;
}str;
int main()
{
    int n,m;

    FILE *in = fopen("stramosi.in", "r");
    FILE *out = fopen("stramosi.out", "w");
    fscanf(in,"%d %d",&n,&m);
    str * v = (str *)malloc( (n+1)*sizeof(str));
    for(int i=1;i<=n;i++){
        int k;
        fscanf(in,"%d",&k);
        if(!k) v[i].par = NULL;
        else v[i].par = &v[k];
        v[i].par2 = NULL;
        v[i].n = i;
    }
    for(int i=1;i<=n;i++){
        if(v[i].par)
            v[i].par2 = v[i].par->par;
    }

    for( int i = 1; i<= m; i++) {
        int p;
        int q;
        fscanf(in,"%d %d",&q,&p);
        str * pp = &v[q];
        while(pp  && p >1) {
            pp = pp->par2;
            p-=2;
        }
        if(pp && p) {
            pp = pp->par;
            p--;
        }
        cout<<p<<" ";
        if(pp && p==0)fprintf(out,"%u\n",pp->n);
        else fprintf(out,"0\n");
    }
    fclose(in);
    fclose(out);
    return 0;
}