Cod sursa(job #2267423)

Utilizator NicolaalexandraNicola Alexandra Mihaela Nicolaalexandra Data 23 octombrie 2018 17:24:38
Problema Curcubeu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 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 = (1LL*a*i) % n;
        B = (1LL*b*i) % n;
        C = (1LL*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){
                w[j] = dr; /// intervalul de la j la dr este colorat complet
                cul[j] = v[i].second;
                j++;
            } else {
                j = w[j] + 1;
            }

        }


    }

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

    return 0;
}