Pagini recente » Cod sursa (job #1098394) | Cod sursa (job #1834103) | Cod sursa (job #294703) | Cod sursa (job #1046773) | Cod sursa (job #235611)
Cod sursa(job #235611)
#include<stdio.h>
int ta,r,x,jj,t[1000111],n,a,b,c,cu[1000111],i,j;
int main(){
FILE *f=fopen("curcubeu.in","r");
fscanf(f,"%d %d %d %d",&n,&a,&b,&c);
fclose(f);
int ok=1;
for(i=2;i<=n;i++){
t[i]=1;
}
t[1]=-(n-1);
int aux,nr=0;
for(i=1; nr<n-1 ;i++){
if(b<a){
aux=b;
b=a;
a=aux;
}
if(t[a] < 0)
ta=a;
else
ta=t[a];
if( !cu[ta] ){
t[a]=-1;
if(a!=ta)
t[ta]=-(a-ta);
cu[a]=c;
nr++;
r=a;
x=a+1;
}
else{
r=ta;
x=ta+(-t[ta]);
while(cu[x]){
ta=x;
x=ta+(-t[ta]);
}
}
while(x<=b && !cu[x]){
cu[x]=c;
nr++;
t[r]--;
t[x]=r;
x++;
while(t[x] < 0 && cu[x]){
r=x;
x=x+(-t[x]);
}
}
if(x==b+1 && ! cu[x]){
r=x;
t[x]=-1;
x++;
for(;t[x] > 0;x++){
t[x]=r;
t[r]--;
}
}
a=(a*i)%n;
b=(b*i)%n;
c=(c*i)%n;
}
FILE *g=fopen("curcubeu.out","w");
for(i=1;i<n;i++)
fprintf(g,"%d\n",cu[i]);
fclose(g);
return 0;
}