Cod sursa(job #972759)

Utilizator Mihai22eMihai Ionut Enache Mihai22e Data 12 iulie 2013 16:53:02
Problema Curcubeu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
using namespace std;

const int MAX_N = 1000002;

int N;
int a[MAX_N], v[MAX_N][3], F[MAX_N];
long long int A, B, C;

int main() {
    ifstream f("curcubeu.in");
    ofstream g("curcubeu.out");

    f >> N >> A >> B >> C;
    int temp;
    if(A > B)
        temp = A, A = B, B = temp;
    v[1][0] = A, v[1][1] = B, v[1][2] = C;
    for(int i = 2; i < N; ++i) {
        A = ((long long) A * i) % N;
        B = ((long long) B * i) % N;
        C = ((long long) C * i) % N;
        int temp;
        if(A > B)
            temp = A, A = B, B = temp;
        v[i][0] = A, v[i][1] = B, v[i][2] = C;
    }

    for(int i = N - 1; i; --i) {
        for(int j = v[i][0]; j <= v[i][1]; ++j)
            if(F[j] )
                j = F[j];
            else
                a[j] = v[i][2], F[j] = v[i][1];

    }

    for(int i = 1; i < N; ++i)
        g << a[i] << '\n';

    f.close();
    g.close();

    return 0;
}