Pagini recente » Cod sursa (job #789960) | Cod sursa (job #546073) | Cod sursa (job #615883) | Istoria paginii runda/eusebiu_oji_2006si2007_cls11-12/clasament | Cod sursa (job #1133457)
#include <cstdio>
#include <algorithm>
using namespace std;
struct culori {
int x;
int y;
int cul;
} v[1000050];
int d[100050],vec[100050];
int tmp,i,j,n;
int main () {
freopen ("curcubeu.in","r",stdin);
freopen ("curcubeu.out","w",stdout);
scanf ("%d%d%d%d",&n,&v[1].x,&v[1].y,&v[1].cul);
for (i=2;i<n;i++) {
v[i].x=int((1LL*v[i-1].x*i)%n);
v[i].y=int((1LL*v[i-1].y*i)%n);
v[i].cul=int((1LL*v[i-1].cul*i)%n);
}
for(i=1;i<=n;i++)
d[i]=i;
for (i=n-1;i>=1;i--) {
if (v[i].x>v[i].y) {
tmp=v[i].x;
v[i].x=v[i].y;
v[i].y=tmp;
}
for (j=v[i].x;j<=v[i].y;j++) {
if (vec[j]==0) {
d[j]=v[i].y+1;
vec[j]=v[i].cul;
}
else {
while (vec[j]!=0)
j=d[j];
if(d[j]<v[i].y)
d[j]=v[i].y+1;
j--;
}
}
}
for (i=1;i<n;i++)
printf("%d\n",vec[i]);
return 0;
}