Pagini recente » Cod sursa (job #793208) | Cod sursa (job #1963464) | Cod sursa (job #2676987) | Profil Opportunity | Cod sursa (job #2925614)
#include <fstream>
using namespace std;
//#pragma GCC optimize ("O3")
ifstream cin("curcubeu.in");
ofstream cout("curcubeu.out");
int lazy[4000005];
int tree[4000005];
int n;
void update (int node,int st,int dr,int qst,int qdr,int cul)
{
if(lazy[node]!=0)
{
tree[node]=lazy[node];
if(st!=dr)
{
lazy[node*2]=lazy[node];
lazy[node*2+1]=lazy[node];
}
lazy[node]=0;
}
if(qst>dr || qdr<st)
{
return;
}
if(qst<=st && dr<=qdr)
{
lazy[node]=cul;
tree[node]=lazy[node];
if(st!=dr)
{
lazy[node*2]=lazy[node];
lazy[node*2+1]=lazy[node];
}
lazy[node]=0;
return;
}
else
{
int mij=(st+dr)/2;
update(2*node,st,mij,qst,qdr,cul);
update(2*node+1,mij+1,dr,qst,qdr,cul);
return ;
}
}
void querry (int node,int st,int dr)
{
if(lazy[node]!=0)
{
tree[node]=lazy[node];
if(st!=dr)
{
lazy[node*2]=lazy[node];
lazy[node*2+1]=lazy[node];
}
lazy[node]=0;
}
if(st==dr)
{
cout<<tree[node]<<'\n';
return;
}
else
{
int mij=(st+dr)/2;
querry(2*node,st,mij);
querry(2*node+1,mij+1,dr);
return;
}
}
int main()
{
long long i,j,k,a,b,c,st,dr;
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin>>n>>a>>b>>c;
for(i=1; i<n; i++)
{
a=(a*i)%n;
b=(b*i)%n;
c=(c*i)%n;
st=min(a,b);
dr=max(a,b);
update(1,1,n-1,st,dr,c);
}
querry(1,1,n-1);
return 0;
}