Cod sursa(job #945680)

Utilizator alexandru70Ungurianu Alexandru alexandru70 Data 2 mai 2013 16:36:21
Problema Curcubeu Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#include <iostream>
using namespace std;

ifstream in ("curcubeu.in");
ofstream out ("curcubeu.out");

const size_t Nmax = 10000001;

int a[Nmax],b[Nmax],c[Nmax],sol[Nmax],nextEmpty[Nmax];

int main()
{
	int n;
	in >> n >> a[1] >> b[1] >> c[1];
	nextEmpty[1]=1;
	for(int i = 2; i < n; i++)
	{
		a[i] = ((a[i-1])%n*(i%n))%n;
		b[i] = ((b[i-1])%n*(i%n))%n;
		c[i] = ((c[i-1])%n*(i%n))%n;
		nextEmpty[i]=i;
	}

	for(int i = n-1; i >= 1; i--)
	{
		int st = min(a[i],b[i]);
		int fn = max(a[i],b[i]);
		int j = st;
		while(j <= fn&& j < n)
		{
			if(nextEmpty[j]==j)
			{
				sol[j]=c[i];
				nextEmpty[j]=fn+1;
				j++;
			}
			else
			{
				int newJ = nextEmpty[j];
				nextEmpty[j] = fn+1;
				j = newJ;
			}
		}

	}
	for(int i = 1; i < n; i++)
		out << sol[i] << '\n';
}