Cod sursa(job #1041978)

Utilizator jul123Iulia Duta jul123 Data 26 noiembrie 2013 13:48:33
Problema Stramosi Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<iostream>
#include<cstdio>
#include<vector>

using namespace std;

vector<int>t[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[i].push_back(v[i]);
    j=1;
    lg=log2(n);
    for(j=1; j<=n; j++)
        t[0].push_back(0);
    j=1;
    while(j<=lg)
    {
    for(i=1; i<=n; i++)
        t[i].push_back(t[t[i][j-1]][j-1]);
    j++;
    }
    for(i=1; i<=m; i++)
    {
     fscanf(fin, "%d %d", &x, &y);

            while(y)
            {j=log2(y);
            y-=(1<<j);
            x=t[x][j];
            }
        fprintf(fout, "%d\n", x);


}
}