Pagini recente » Cod sursa (job #144162) | Cod sursa (job #2416693) | Cod sursa (job #349215) | Cod sursa (job #2758205) | Cod sursa (job #85977)
Cod sursa(job #85977)
#include <stdio.h>
#include <set>
#include <utility>
using namespace std;
#define in "curcubeu.in"
#define out "curcubeu.out"
#define dim 1000001
int N, A1, B1, C1;
int X[dim], Y[dim], V[dim], C[dim];
bool Sel[dim];
int Minim(int,int);
int Maxim(int,int);
int main()
{
int Ai, Bi, Ci;
int size = 0;
freopen(in,"r",stdin);
freopen(out,"w",stdout);
scanf("%d%d%d%d", &N, &A1, &B1, &C1);
for ( int i = 1; i < N; i++ )
{
if ( i == 1 )
{
X[i] = Minim(A1,B1); Y[i] = Maxim(A1,B1); V[i] = C1;
}
else
{
Ai = (A1*i); while ( Ai >= N ) Ai -= N;
Bi = (B1*i); while ( Bi >= N ) Bi -= N;
Ci = (C1*i); while ( Ci >= N ) Ci -= N;
X[i] = Minim(Ai,Bi); Y[i] = Maxim(Ai,Bi); V[i] = Ci;
A1 = Ai; B1 = Bi; C1 = Ci;
}
}
int ok = 1, rest = N-1;
for ( int i = N-1; i >= 1 && rest >= 1; i-- )
{
for ( int j = X[i]; j <= Y[i]; j++ )
{
if ( !Sel[j] ) rest--, C[j] = V[i], Sel[j] = 1;
}
}
for ( int i = 1; i < N; i++ )
printf("%d\n", C[i]);
}
int Minim(int a, int b)
{
if ( a > b ) return b;
return a;
}
int Maxim(int a, int b)
{
if ( a > b ) return a;
return b;
}