Cod sursa(job #197955)

Utilizator CezarMocanCezar Mocan CezarMocan Data 7 iulie 2008 13:38:34
Problema Curcubeu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <cstdio>

using namespace std;

long n,i,j,a[1000100],b[1000100],c[1000100],p[1000100],x[1000100],l,u,t;
long long tt;

int main(){
freopen("curcubeu.in","r",stdin);
freopen("curcubeu.out","w",stdout);    
scanf("%d%d%d%d",&n,&a[1],&b[1],&c[1]);
//printf("%d %d %d\n",a[1],b[1],c[1]);
p[1]=2;
for (i=2;i<n;i++)
    {
    tt=a[i-1];
    tt*=i;
    a[i]=tt%n;
    tt=b[i-1];
    tt*=i;    
    b[i]=tt%n;
    tt=c[i-1];
    tt*=i;    
    c[i]=tt%n;
    p[i]=i+1;
    }
for (i=1;i<n;i++)
    if (a[i]>b[i])
        {
        l=a[i];a[i]=b[i];b[i]=l;    
        }    
for (i=n-1;i>=1;i--)
    {
    l=a[i];
    u=b[i];
    j=l;
    while (j<=u)
        {
        if (x[j]==0)
            x[j]=c[i];
        t=j;
        j=p[j];    
        p[t]=u+1;
        }
    }
for (i=1;i<n;i++)
    printf("%d\n",x[i]);
return 0;    
}