Cod sursa(job #1395069)

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