Cod sursa(job #2487263)

Utilizator rebecca0312Andrei Rebecca rebecca0312 Data 4 noiembrie 2019 13:59:47
Problema Curcubeu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<cstdio>
using namespace std;

const int NMAX=1000005;
int a[NMAX],b[NMAX],c[NMAX],next[NMAX],col[NMAX];

int main(){
	freopen("curcubeu.in","r",stdin);
	freopen("curcubeu.out","w",stdout);
	int n;
	scanf("%d%d%d%d", &n, &a[1], &b[1], &c[1]);
	if(a[1]>b[1]){
		int aux=a[1];
		a[1]=b[1];
		b[1]=aux;
	}
	for(int i=2;i<n;i++){
		a[i]=(a[i-1]*1LL*i)%n;
		b[i]=(b[i-1]*1LL*i)%n;
		c[i]=(c[i-1]*1LL*i)%n;
		if(a[i]>b[i]){
			int aux=a[i];
			a[i]=b[i];
			b[i]=aux;
		}
	}
	for(int t=n-1;t>0;t--)
		for(int i=a[t];i<=b[t];)
			if(col[i])
                i=next[col[i]]+1;
			else{
				col[i]=c[t];
				next[col[i]]=i;
				i++;
			}
	for(int i=1;i<n;i++)
        printf ("%d\n", col[i]);
	return 0;
}