Cod sursa(job #555209)

Utilizator david_raucaRauca Ioan David david_rauca Data 15 martie 2011 12:39:03
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include<fstream>
using namespace std;

ifstream fin("stramosi.in");
ofstream fout("stramosi.out");

int n, m;

int s[21][250001];

void Read();
void Din();

int main()
{
    Read();
    
    fin.close();
    fout.close();
    
    return 0;
}

void Read()
{
     fin >> n >> m;
     
     for( int i = 1; i <= n; ++i )
          fin >> s[0][i];
     
     Din();
     /*
     for( int i = 0; i <= 5; ++i )
     {
          for( int j = 1; j <= n; ++j )
               fout << s[i][j] << ' ';
          fout << '\n';
     }
     */
     int x, y;
     int niv;
     
     for( int i = 1; i <= m; ++i )
     {
          fin >> x >> y;
          niv = 1;
          while( y != 0 )
          {
                 if( y % 2 == 1 )
                     x = s[niv-1][x];
                 y /= 2;
                 niv++;
          }
          fout << x << '\n';
     }
     
}

void Din()
{
     bool ok = 1;
     int k = 0;
     while( ok )
     {
            ok = 0;
            k++;
            for( int i = 1; i <= n; ++i )
            {
                 int j = s[k-1][i];
                 s[k][i] = s[k-1][j];
                 if( s[k][i] != 0 )
                     ok = 1;
            }
     }
}