Pagini recente » Cod sursa (job #2868672) | Cod sursa (job #299486) | Cod sursa (job #756258) | Cod sursa (job #1350887) | Cod sursa (job #2956349)
#include <fstream>
using namespace std;
ifstream f("curcubeu.in");
ofstream g("curcubeu.out");
const int NMAX=1000003;
int n,A,B,C,a[NMAX],b[NMAX],c[NMAX],poz[NMAX],v[NMAX];
int main()
{
f>>n>>A>>B>>C;
a[1]=A;
b[1]=B;
c[1]=C;
if(a[1]>b[1])
swap(a[1],b[1]);
for(int i=2;i<=n;i++)
{
a[i]=(1LL*a[i-1]*i)%n;
b[i]=(1LL*b[i-1]*i)%n;
if(a[i]>b[i])
swap(a[i],b[i]);
c[i]=(1LL*c[i-1]*i)%n;
}
for(int i=n-1;i>0;i--)
{
int st=a[i];
int dr=b[i];
while(st<=dr)
{
if(!poz[st])
{
v[st]=c[i];
poz[st]=dr+1;
st++;
}
else
{
int st1=st;
st=poz[st]+1;
poz[st1]=max(poz[st1],dr+1);
}
poz[st]=max(poz[st],dr+1);
}
}
for(int i=1;i<n;i++)
{
g<<v[i]<<'\n';
}
return 0;
}