Mai intai trebuie sa te autentifici.
Cod sursa(job #3181133)
Utilizator | Data | 6 decembrie 2023 15:33:55 | |
---|---|---|---|
Problema | Curcubeu | Scor | 20 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.92 kb |
#include <fstream>
#define sz 1000000
using namespace std;
ifstream fin("curcubeu.in");
ofstream fout("curcubeu.out");
int n,a,b,c;
struct query{
int a;
int b;
int c;
}q[sz + 5];
int nxt[sz + 5];
int get_nxt(int poz)
{
int cp = poz;
while(nxt[poz] != poz)
poz=nxt[poz];
while(cp != poz){
int aux = nxt[cp];
nxt[cp]=poz,cp=aux;
}
return cp;
}
int v[sz + 5];
int main()
{
fin>>n>>q[0].a>>q[0].b>>q[0].c;
for(int i=0;i<=n;i++)
nxt[i]=i;
for(int i=1;i<n;i++)
{
q[i].a = (q[i-1].a * i) % n;
q[i].b = (q[i-1].b * i) % n;
if(q[i].a>q[i].b)
swap(q[i].a,q[i].b);
q[i].c = (q[i-1].c * i) % n;
}
for(int i = n-1; i > -1;i--)
for(int j = get_nxt(q[i].a);j<=q[i].b;j=nxt[j])
v[j]=q[i].c,nxt[j]=get_nxt(j+1);
for(int i=1;i<n;i++)
fout<<v[i]<<'\n';
}