Cod sursa(job #1395090)

Utilizator campionulFlavius Stoican campionul Data 20 martie 2015 23:53:27
Problema Curcubeu Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <cstdio>
#include <iostream>
#define nmax 1000009
using namespace std;
int n;
int A[nmax],B[nmax],C[nmax];
int urm[nmax],cul[nmax];
int main(){
    int i,j,st,dr,g,s;
    freopen("curcubeu.in","r",stdin);
    freopen("curcubeu.out","w",stdout);
    scanf("%d%d%d%d",&n,&A[1],&B[1],&C[1]);
    for(i=2;i<n;i++){
        A[i]=(A[i-1]*1LL*i)%n;
        B[i]=(B[i-1]*1LL*i)%n;
        C[i]=(C[i-1]*1LL*i)%n;
    }
    for(i=n-1;i>0;i--){
        st=min(A[i],B[i]);
        dr=max(A[i],B[i]);
        g=C[i];
        for(j=st;j<=dr;j++){
                s=urm[j];
            urm[j]=max(urm[j],dr-j);
                if(!cul[j])
            cul[j]=g;
          j+=s;
        }
        urm[st]=max(urm[st],dr-st);
    }
    for(i=1;i<n;i++)
        printf("%d\n",cul[i]);
    return 0;
}