Pagini recente » Istoria paginii runda/mf_boss2/clasament | Cod sursa (job #1664818) | Cod sursa (job #1657879) | Cod sursa (job #3286175) | Cod sursa (job #1662429)
#include <cstdio>
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <utility>
#include <algorithm>
#include <functional>
#include <string>
#include <cstring>
#include <cmath>
#include <map>
#include <set>
#include <bitset>
#include <stack>
#include <iomanip>
#define MOD 1000000000
#define NMAX 250005
#define logMax 22
#define INF 0x3f3f3f3f
#define pb push_back
using namespace std;
typedef pair<int, int> pii;
FILE *fin=fopen("stramosi.in", "r");
FILE *fout=fopen("stramosi.out", "w");
int stramos[logMax][NMAX];
int main() {
int n,m,i,j,p,q;
bool ok;
fscanf(fin, "%d%d", &n,&m);
for(i=1;i<=n;++i)
fscanf(fin, "%d", &stramos[0][i]);
for(i=1;i<logMax;++i) {
ok=0;
for(j=1;j<=n;++j) {
stramos[i][j]=stramos[i-1][stramos[i-1][j]];
if(stramos[i][j]) ok = 1;
}
if(!ok) break;
}
while(m--) {
fscanf(fin, "%d%d", &q,&p);
i=0;
while(p) {
if(p&1)
q=stramos[i][q];
p>>=1;
++i;
}
fprintf(fout, "%d\n", q);
}
return 0;
}