Cod sursa(job #996160)

Utilizator costinbanuCostin Banu costinbanu Data 11 septembrie 2013 10:56:29
Problema Curcubeu Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include<cstdio>
#include<cstdlib>
using namespace std;

long *color, *a, *b, *c, n, k;

inline long min (long a, long b) { return (a > b) ? b : a; }
inline long max (long a, long b) { return (a > b) ? a : b; }
inline long * shp(long n) { return (long *) calloc (n + 2, sizeof(long)); }

int main(){
    FILE *in = fopen("curcubeu.in", "r"), *out = fopen("curcubeu.out", "w");
    if (in && out){
        fscanf(in, "%d", &n);
        color = shp(n), a = shp(n), b = shp(n), c = shp(n);
        fscanf(in, "%ld %ld %ld", &a[1], &b[1], &c[1]);
        for (int j = min(a[1], b[1]); j <= max(a[1], b[1]); j++, k++)
            color[j] = c[1];
        for(long i = 2; i <= n-1; i++){
            a[i] = ((a[i-1] % n) * i) % n;
            b[i] = ((b[i-1] % n) * i) % n;
            c[i] = ((c[i-1] % n) * i) % n;
        }
        int i = n-1;
        while (k < n-1 && i > 0) {
            for (int j = min(a[i], b[i]); j<= max(a[i], b[i]); j++)
                if (color[j] == 0) color[j] = c[i], k++;
            i--;
        }
        for (int i = 1; i <= n-1; i++)
            fprintf(out,"%ld\n", color[i]);
        printf("%Ld", (2576846787889L % 115657894678L));
        fclose(in), fclose(out);
    }
    return 0;
}