Cod sursa(job #2751944)

Utilizator SteFUNGrigorescu Stefan Dumitru SteFUN Data 16 mai 2021 06:32:44
Problema Stramosi Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#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;
}