Cod sursa(job #2316229)

Utilizator shantih1Alex S Hill shantih1 Data 11 ianuarie 2019 14:31:35
Problema Curcubeu Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <iostream>
#include <fstream>

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

int n,i,j,nr,k,a,b,c,x;
int r[1000005],t[1000005];
struct oper
{	int a,b,c;	} v[1000005];

int tati(int n)
{
	if(t[n]==n)	return n;
	t[n]=tati(t[n]);
	return t[n];
}
int main() {
	
	fin>>n>>a>>b>>c;
	v[1].a=min(a,b);
	v[1].b=max(a,b);
	v[1].c=c;
	for(i=2;i<n;i++)
	{
		a=(a*i)%n;
		b=(b*i)%n;
		c=(c*i)%n;
		v[i].a=min(a,b);
		v[i].b=max(a,b);
		v[i].c=c;
	}
	
	for(i=n-1;i>=1;i--)
	{
		a=v[i].a;
		b=v[i].b;
		if(r[b])	t[i]=tati(b);
		else		t[i]=i;
		
		for(j=a;j<=b;)
		{
			if(r[j])
			{
				x=tati(r[j]);
				j=v[x].b+1;
				t[x]=t[i];
			}
			else
			{	r[j]=i;	j++;	}
		}
	}
	
	for(i=1;i<n;i++)
		fout<<v[r[i]].c<<"\n";
}