Cod sursa(job #1446064)

Utilizator livliviLivia Magureanu livlivi Data 31 mai 2015 19:54:17
Problema Curcubeu Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include<cstdio>
#define N 1000000
using namespace std;

int next[N+1];
int a[N+1];
int b[N+1];
int c[N+1];
int color[N+1];

int urm(int x){
    if (next[x]==0) return x;
    next[x]=urm(next[x]);
    return next[x];
}


int main(){
    freopen ("curcubeu.in","r",stdin);
    freopen ("curcubeu.out","w",stdout);
    int n,i,aux,j;

    scanf ("%d",&n);
    scanf ("%d%d%d",&a[1],&b[1],&c[1]);

    for(i=2;i<n;i++){
        a[i]=(a[i-1]*i)%n;
        b[i]=(b[i-1]*i)%n;
        c[i]=(c[i-1]*i)%n;

        if (a[i]>b[i]){
            aux=a[i];
            a[i]=b[i];
            b[i]=aux;
        }
    }

    for(i=n-1;i>0;i--){
        j=urm(a[i]);

        while(j<=b[i]){
            color[j]=c[i];
            next[j]=b[i]+1;

            j=urm(j+1);
        }
    }

    for(i=1;i<n;i++)
        printf ("%d\n",color[i]);

    return 0;
}