Cod sursa(job #848863)

Utilizator stoicatheoFlirk Navok stoicatheo Data 5 ianuarie 2013 20:25:51
Problema Curcubeu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#include <cstdio>
 
#define DIM 1000002
 
using namespace std;
 
int A[DIM], B[DIM], C[DIM], V[DIM], T[DIM];
 
int N, i, j, aux;
 
int main() {
    ifstream f("curcubeu.in");
    FILE *g = fopen("curcubeu.out","w");
     
    f>>N>>A[1]>>B[1]>>C[1];
    if (A[1] > B[1]) {
        aux = A[1];
        A[1] = B[1];
        B[1] = aux;
    }
     
    for (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]) {
            aux = A[i];
            A[i] = B[i];
            B[i] = aux;
        }
    }
     
    for (i=1;i<=N;i++)
        T[i] = i;
     
    for (i=N-1;i>=1;i--) {
        for (j=A[i];j<=B[i];) {
            if (V[j] == 0) {
                V[j] = C[i];
                T[j] = B[i]+1;
                j++;
            } else
                j = T[j];
        }
    }
     
    for (i=1;i<N;i++)
        fprintf(g,"%d\n",V[i]);
//      g<<V[i]<<"\n";
     
    return 0;
}