Pagini recente » Cod sursa (job #699814) | Cod sursa (job #884417) | Cod sursa (job #566443) | Cod sursa (job #14976) | Cod sursa (job #1459637)
#include<cstdio>
#include<algorithm>
#define NMAX 1000000
int a[NMAX+1],b[NMAX+1],c[NMAX+1];
struct casa{int culoare,urmator;};
casa v[NMAX+1];
int ULTIM;
void coloreaza(int st,int &dr,int cul)
{
if(v[dr].culoare==0 && dr>=st)
{
v[dr].culoare=cul;
coloreaza(st,v[dr].urmator,cul);
v[dr].urmator=ULTIM;
}
else
ULTIM=dr;
}
int main()
{
freopen("curcubeu.in","r",stdin);
freopen("curcubeu.out","w",stdout);
int n;
scanf("%d %d %d %d ",&n,&a[1],&b[1],&c[1]);
for(int i=2;i<=n-1;i++)
{
a[i]=(a[i-1]*i)%n;
b[i]=(b[i-1]*i)%n;
c[i]=(c[i-1]*i)%n;
v[i].urmator=i-1;
}
for(int i=n-1;i>=1;i--)
{
int st=std::min(a[i],b[i]),dr=std::max(a[i],b[i]);
if(st!=0 && dr!=0)
{
while(dr>=st)
{
coloreaza(st,dr,c[i]);
dr=v[dr].urmator;
}
}
}
for(int i=1;i<=n-1;i++)
printf("%d ",v[i].culoare);
fclose(stdin);
fclose(stdout);
return 0;
}