Cod sursa(job #418448)

Utilizator bogdan491Bogdan bogdan491 Data 15 martie 2010 21:41:24
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <fstream>
#include <vector>
#include  <iostream>
using namespace std;
int main(){
int n,m;
ifstream in("stramosi.in");
ofstream out("stramosi.out");
in>>n>>m;
vector<vector<int> > v(21,vector<int>(n+1,0));
for(int i=0;i<n;i++) in>>v[0][i+1];
for(int k=1;k<21;k++){
for(int i=1;i<=n;i++){
v[k][i]=v[k-1][v[k-1][i]];
}
}
for(int i=0;i<m;i++){
int p,q;
in>>q>>p;
//al p lea stramos a lui q
int putere=1;int numar=0;
while(putere<=p){
putere*=2;
numar++;
}
putere/=2;numar--;
while(putere>=0 and p){
q=v[numar][q];
p-=putere;
while(putere>p){
putere/=2;
numar--;
}
}
out<<q<<"\n";
}
}