Cod sursa(job #1547444)

Utilizator ErikHEErik Henning ErikHE Data 9 decembrie 2015 16:34:14
Problema Stramosi Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream f("stramosi.in");
ofstream g("stramosi.out");

int a[250001][21], i, j, n, m, k, p, v[250001], q;

int main()
{
    f>>n>>m;
    for (i=1;i<=n;i++)
        f>>v[i];
  if (m<=200000)   {
    for (i=1;i<=m;i++)  {
        f>>q>>p;
        for(j=1;j<=p;j++)
            q=v[q];
        g<<q<<"\n";
    }
   }
   else {
        for (i=1;i<=n;i++)  {
            a[0][i] = i;
            for (j=1;j<=20;j++)
                a[j][i] = v[a[j-1][i]];//precalculez matricea dupa stramosii demai sus
        }
        for (i=1;i<=m;i++)  {
            f>>q>>p;
            while (p >= 20) {
                q = a[20][q];
                p = p-20;
            }
            if (p==0)
                g<<q<<"\n";
            else
                g<<a[p][q]<<"\n";

        }
   }
    return 0;
}