Pagini recente » Cod sursa (job #3211085) | Cod sursa (job #544553) | Cod sursa (job #66669) | Cod sursa (job #2370749) | Cod sursa (job #2751944)
#include <iostream>
#include <fstream>
std::ifstream f("stramosi.in");
std::ofstream g("stramosi.out");
int stramos[250001];
int skipStramos[250001];
int skipOrdin[250001];
int main()
{
int n, m, i, j;
f >> n >> m;
for (i = 1; i <= n; i++)
f >> stramos[i];
int membru, ordin; // membrul si ordinul stramosului cautat
int intermediar, cordin; // stramos intermediar si copie ordin
for (j = 1; j <= m; j++)
{
f >> membru >> ordin;
intermediar = membru;
cordin = ordin;
while (ordin)
{
if (skipOrdin[intermediar] > 0 and skipOrdin[intermediar] <= ordin)
{
ordin = ordin - skipOrdin[intermediar];
intermediar = skipStramos[intermediar];
}
else
{
intermediar = stramos[intermediar];
ordin--;
}
}
skipStramos[membru] = intermediar;
skipOrdin[membru] = cordin;
g << intermediar << " ";
}
return 0;
}