Cod sursa(job #2267135)

Utilizator NicolaalexandraNicola Alexandra Mihaela Nicolaalexandra Data 23 octombrie 2018 12:14:48
Problema Curcubeu Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>
#define DIM 1000010
using namespace std;

ifstream fin ("curcubeu.in");
ofstream fout ("curcubeu.out");
int n,a,b,c,A,B,C,i,j,st,dr;
pair < pair<int,int>, int > v[DIM];
int cul[DIM],w[DIM];
int main (){

    fin>>n>>a>>b>>c;
    v[1] = make_pair(make_pair( min(a,b),max(a,b) ),c);
    for (i=2;i<=n-1;i++){
        A = (a*i) % n;
        B = (b*i) % n;
        C = (c*i) % n;

        v[i] = make_pair(make_pair( min(A,B),max(A,B) ),C);

        a = A, b = B, c = C;
    }

    for (i=n-1;i>=1;i--){

        st = v[i].first.first;
        dr = v[i].first.second;

        j = st;
        while (j <= dr){

            if (w[j] == 0){
                cul[j] = v[i].second;
                j++;
            } else {
                j = w[j] + 1;
            }

        }

        w[st] = dr; /// intervalul de la st la dr este colorat complet

    }

    for (i=1;i<=n-1;i++)
        fout<<cul[i]<<"\n";

    return 0;
}