Cod sursa(job #995586)

Utilizator costinbanuCostin Banu costinbanu Data 9 septembrie 2013 19:14:52
Problema Curcubeu Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<cstdio>
using namespace std;

int color[1000010], a, b, c, n, k;

inline int min (int a, int b) { return (a > b) ? b : a; }
inline int max (int a, int b) { return (a > b) ? a : b; }

void rainbow(int a, int b, int c, int i){
    if (i < n-1){
        i++;
        a = (a * i) % n;
        b = (b * i) % n;
        c = (c * i) % n;
        rainbow(a, b, c, i);
        if (k < n-1) {
        for (int j = min(a, b); j<= max(a, b); j++)
            if (color[j] == 0) color[j] = c, k++;
        }
    }
}

int main(){
    FILE *in = fopen("curcubeu.in", "r"), *out = fopen("curcubeu.out", "w");
    if (in && out){
        fscanf(in, "%d %d %d %d", &n, &a, &b, &c);
        for (int j = min(a, b); j <= max(a, b); j++, k++)
            color[j] = c;
        rainbow(a, b, c, 1);
        for (int i = 1; i <= n-1; i++)
            fprintf(out,"%d\n", color[i]);
        fclose(in), fclose(out);
    }
    return 0;
}