Pagini recente » Istoria paginii utilizator/maria111 | Diferente pentru utilizator/tudorbuhnia intre reviziile 13 si 14 | Istoria paginii utilizator/c909001 | Monitorul de evaluare | Cod sursa (job #1395087)
#include <cstdio>
#include <algorithm>
#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;
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;
C[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<n;j+=urm[j]+1){
urm[j]=max(urm[j],dr-j-1);
if(!cul[j])
cul[j]=g;
}
urm[st]=max(urm[st],dr-st);
}
for(i=1;i<n;i++)
printf("%d\n",cul[i]);
return 0;
}