Cod sursa(job #85919)

Utilizator DastasIonescu Vlad Dastas Data 23 septembrie 2007 11:27:08
Problema Curcubeu Scor 0
Compilator cpp Status done
Runda Autumn Warmup 2007, Runda 2 Marime 1.07 kb
#include <cstdio>

const int maxn = 1000001;

FILE *in = fopen("curcubeu.in","r"), *out = fopen("curcubeu.out","w");

int n, a, b, c;

inline int min(int x, int y)
{
    return x < y ? x : y;
}

inline int max(int x, int y)
{
    return x > y ? x : y;
}

int culori[maxn];
int nr[maxn]; // nr[i] = cate elemente de dupa elementul i au culoarea lui i

int main()
{
    fscanf(in, "%d %d %d %d", &n, &a, &b, &c);

    int t1, t2, t3;
    for ( int i = 1; i < n; ++i )
    {
        t1 = (a * i) % n;
        t2 = (b * i) % n;
        t3 = (c * i) % n;

        int k = max(t1, t2);
        int q = min(t1, t2);

//        for ( int j = min(t1, t2); j <= k; ++j )
            culori[q] = t3;
            nr[q] = k;

        a = t1, b = t2, c = t3;
    }

    int j = 0;
    for ( int i = 1; i < n; ++i )
        if ( nr[i] )
        {
            for ( j = i; j <= nr[i]; ++j )
                fprintf(out, "%d\n", culori[i]);
            i = nr[i];
        }
        else if ( !culori[i] )
            fprintf(out, "%d\n", 0);
	return 0;
}