Cod sursa(job #2054264)

Utilizator Alex.PAlexandru Pacurar Alex.P Data 1 noiembrie 2017 20:27:07
Problema Curcubeu Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <stdio.h>
#include <stdlib.h>

using namespace std;

long long v[1000001];
long long a[1000001];
long long b[1000001];
long long c[1000001];
long long next[1000001];

int main()
{
    FILE *fin, *fout;
    long long n,i,j,aux;
    fin=fopen("curcubeu.in","r");
    fout=fopen("curcubeu.out","w");
    fscanf(fin,"%lld%lld%lld%lld",&n,&a[1],&b[1],&c[1]);
    if(a[1]>b[1]){
        aux=a[1];
        a[1]=b[1];
        b[1]=aux;
    }
    next[1]=2;
    for(i=2;i<n;i++){
        a[i]=(a[i-1]*i)%n;
        b[i]=(b[i-1]*i)%n;
        c[i]=(c[i-1]*i)%n;
        if(a[i]>b[i]){
            int aux=a[i];
            a[i]=b[i];
            b[i]=aux;
        }
        next[i]=i+1;
    }
    for(i=n-1;i>0;i--){
        for(j=a[i];j<=b[i];aux=next[j],next[j]=b[i]+1,j=aux)
            if(v[j]==0)
                v[j]=c[i];
    }
    for(i=1;i<n;i++){
        fprintf(fout,"%lld\n",v[i]);
    }
    fclose(fin);
    fclose(fout);
    return 0;
}