Mai intai trebuie sa te autentifici.
Cod sursa(job #2104203)
Utilizator | Data | 11 ianuarie 2018 13:27:03 | |
---|---|---|---|
Problema | Curcubeu | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.96 kb |
#include <cstdio>
#include <iostream>
using namespace std;
int aint[5000000];
void update (int i,int st,int dr,int p,int u,int x){
int mid;
if (p<=st && dr<=u){
aint[i]=x;
return;
}
mid=(st+dr)/2;
if (p<=mid)
update (2*i,st,mid,p,u,x);
if (u>mid)
update (2*i+1,mid+1,dr,p,u,x);
}
int query (int i,int st,int dr,int x){
int mid;
if (st<=x && x<=dr && aint[i]!=0)
return aint[i];
mid=(st+dr)/2;
if (x<=mid)
return query (2*i,st,mid,x);
else return query (2*i+1,mid+1,dr,x);
}
int main()
{
FILE *fin=fopen ("curcubeu.in","r");
FILE *fout=fopen ("curcubeu.out","w");
int n,a,b,c,i;
fscanf (fin,"%d%d%d%d",&n,&a,&b,&c);
for (i=1;i<=n-1;i++){
a=(a*i)%n;
b=(b*i)%n;
c=(c*i)%n;
update (1,1,n-1,min(a,b),max(a,b),c);
}
for (i=1;i<n;i++)
fprintf (fout,"%d\n",query (1,1,n-1,i));
return 0;
}