Cod sursa(job #2006583)

Utilizator infomaxInfomax infomax Data 30 iulie 2017 20:53:11
Problema Curcubeu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, a1, a, b1, b, c1, c, v[1000005], nxt[1000005], tx;

int fnd(int x)
{
    int r, y;
    for(r = x; r != nxt[r]; r = nxt[r]+1);

    return r;
}

int main()
{
    fscanf(F, "%d %d %d %d ", &n, &a1, &b1, &c1);
    for(int i = 1; i < n; ++ i) nxt[i] = i;
    if(a1 > b1) swap(a1, b1);
    for(int i = a1; i <= b1; ++ i)
        v[i] = c1, nxt[i] = b1;
    for(int i = 2; i < n; ++ i)
    {
        a = (a1 *i)%n;
        b = (b1 * i)%n;
        c = (c1 * i)%n;
        a = a1, b1 = b, c1 = c;
        if(a > b) swap(a, b);
        for(int j = nxt[a]+1; j <= b; j = nxt[j]+1)
        {
            while(nxt[j] == j && !v[j] && j < n && j <= b)
            {
                v[j] = c;
                if(nxt[j] + 1 < n)
                    j = nxt[j]+1;
            }
        }
    }
    for(int i = 1; i < n; ++ i)
        fprintf(G, "%d\n", v[i]);
    return 0;
}