Cod sursa(job #1259107)

Utilizator j.loves_rockJessica Joanne Patrascu j.loves_rock Data 9 noiembrie 2014 18:29:25
Problema Curcubeu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <cstdio>
#include <algorithm>
using namespace std;

FILE *f=fopen ("curcubeu.in","r");
FILE *g=fopen ("curcubeu.out","w");

int a[1000005],b[1000005],c[1000005],urm[1000005],sol[1000005];

int main(){
    int n,st,dr;

    fscanf (f,"%d%d%d%d",&n,&a[1],&b[1],&c[1]);

    for (int i=2;i<n;++i){
        a[i]=(1LL*a[i-1]*i)%n;
        b[i]=(1LL*b[i-1]*i)%n;
        c[i]=(1LL*c[i-1]*i)%n;
    }

    for (int i=n-1;i>0;--i){
        st=min(a[i],b[i]);
        dr=max(a[i],b[i]);
        for (int j=st;j<=dr;++j){
            while (urm[j] && j<=dr) j=urm[j];
            if (j<=dr){
                sol[j]=c[i];
                urm[j]=dr+1;
            }
        }
    }

    for (int i=1;i<n;++i) fprintf (g,"%d\n",sol[i]);

    return 0;
}