Pagini recente » Cod sursa (job #577268) | Cod sursa (job #1812231) | Cod sursa (job #2056842) | Cod sursa (job #598911) | Cod sursa (job #2262306)
#include <cstdio>
#include <algorithm>
#define NMAX 1000005
using namespace std;
int a[NMAX],b[NMAX],c[NMAX],imobiliare[NMAX],nexxt[NMAX];
inline void zugravesteContraCost(int &st,int &dr,int &culoare);
int main()
{
freopen("curcubeu.in","r",stdin);
freopen("curcubeu.out","w",stdout);
int x,y,z,n;
scanf("%d%d%d%d",&n,&a[1],&b[1],&c[1]);
for(int i = 2 ; i < n ; i++)
{
a[i] = 1LL*(a[i-1]*i)%n;
b[i] = 1LL*(b[i-1]*i)%n;
c[i] = 1LL*(c[i-1]*i)%n;
}
for(int i = n-1 ; i >= 1 ; i--)
{
int st,dr;
st = min(a[i],b[i]);
dr = max(a[i],b[i]);
zugravesteContraCost(st,dr,c[i]);
}
for(int i = 1 ; i < n ; i++)
printf("%d\n",imobiliare[i]);
return 0;
}
inline void zugravesteContraCost(int &st,int &dr,int &culoare)
{
for(int i = st ; i <= dr ; i++)
{
if(imobiliare[i] == 0)
{
nexxt[i] = dr+1;
imobiliare[i] = culoare;
}
else
{
i = nexxt[i];
i--;
}
}
}