Cod sursa(job #1669643)

Utilizator Andrei_PopaAndreiCDG Andrei_Popa Data 30 martie 2016 21:36:21
Problema Stramosi Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int Stram[20][250001];
int n,m;

int log;
void parcurgere()
{

}
void cautare(int memb,int strab)
{
    int c,r;
    c=strab/log;
    r=strab%log;
    int i;
    int t=memb;

    if(r!=0)
    {
         for(i=1;i<=c;i++)
         t=Stram[log][t];
         g<<Stram[r][t]<<'\n';
    }
    if(r==0)
    {
        for(i=1;i<c;i++)
         t=Stram[log][t];
         g<<Stram[log][t]<<'\n';
    }

}
int detLog(int a)
{
    int nrPasi=0;
    while(a/2!=0)
    {
        a=a/2;
        nrPasi++;
    }

    return nrPasi;
}
int main()
{
    int i,j,k;
    f>>n>>m;
    for(i=1;i<=n;i++)
    f>>Stram[1][i];

   log=detLog(n);

    for(i=2;i<=log;i++)
    for(j=1;j<=n;j++)
        Stram[i][j]=Stram[1][Stram[i-1][j]];

    /*for(i=1;i<=log;i++)
    {
        for(j=1;j<=n;j++)
        g<<Stram[i][j]<<'\t';
        g<<'\n';
    }*/
    int memb;
    int strab;
    for(i=1;i<=m;i++)
    {
        f>>memb>>strab;

        cautare(memb,strab);
    }



    f.close();
    g.close();
    return 0;
}