Cod sursa(job #657938)

Utilizator tzipleatudTudor Tiplea tzipleatud Data 7 ianuarie 2012 17:26:14
Problema Curcubeu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <cstdio>
#include <algorithm>
#define NMAX 1000001

using namespace std;



int n,a[NMAX],b[NMAX],c[NMAX],PR[NMAX],v[NMAX],i,x;

int main () {
    freopen ("curcubeu.in", "r", stdin);
    freopen ("curcubeu.out", "w", stdout);
    scanf ("%d%d%d%d", &n, &a[1], &b[1], &c[1]);
    PR[1]=1;PR[n]=n;
    if (a[1]>b[1]) swap(a[1],b[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;
        if (a[i]>b[i]) swap(a[i],b[i]);
        PR[i]=i;
    }
    for (i=n-1;i>=1;i--)
        for (x=a[i];x<=b[i];)
            if (v[x]==0) {
                v[x]=c[i];
                PR[v[x]]=x;
                x++;
            }
            else x=PR[v[x]]+1;
    for (i=1;i<n;i++)
        printf ("%d\n", v[i]);
    return 0;
}