Cod sursa(job #3192554)

Utilizator AlexanderCernyCernaianu Alexandru AlexanderCerny Data 12 ianuarie 2024 20:43:04
Problema Curcubeu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
#include <iostream>
#define DIM 1000001

using namespace std;

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

int n,i;
unsigned int a[DIM],b[DIM],c[DIM],sol[DIM],nextEmpty[DIM];
int main()
{
	fin>>n>>a[1]>>b[1]>>c[1];
	nextEmpty[1]=1;
	for(i=2;i<n;i++)
	{
		a[i]=(1LL*a[i-1]*i)%n;
		b[i]=(1LL*b[i-1]*i)%n;
		c[i]=(1LL*c[i-1]*i)%n;
		nextEmpty[i]=i;
	}
	for(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)
		{
			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(i=1;i<n;i++)
		fout << sol[i] << '\n';
}