Cod sursa(job #1042403)

Utilizator jul123Iulia Duta jul123 Data 26 noiembrie 2013 23:18:35
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<iostream>
#include<cstdio>
#include<vector>

using namespace std;

int t[18][350000];
int v[350000], m, n;
int log2(int x)
{
    int aux=1, nr=0;
    while(aux<=x)
    {
        aux = aux<<1;
        nr++;
    }
    return nr-1;
}
int main()
{
    FILE *fin, *fout;
    fin=fopen("stramosi.in","r");
    fout=fopen("stramosi.out","w");

    int i, j, aux,lg, x, y;
    fscanf(fin, "%d %d", &n, &m);
    for(i=1; i<=n; i++)
        fscanf(fin, "%d", &v[i]);
    for(i=1; i<=n; i++)
        t[0][i]=v[i];
    j=1;
    lg=log2(n);
    for(j=1; j<=n; j++)
        t[j][0]=0;
    j=1;
    while(j<=lg)
    {
    for(i=1; i<=n; i++)
        t[j][i]=t[j-1][t[j-1][i]];
    j++;
    }
    for(i=1; i<=m; i++)
    {
     fscanf(fin, "%d %d", &x, &y);
     j=17;
     while(y!=0)
     {for(; j>=0 && (1<<j) > y; j--);
        x=t[j][x];
        y-=(1<<j);
     }
        fprintf(fout, "%d\n", x);
     }

}