Pagini recente » Cod sursa (job #311414) | Cod sursa (job #1534439) | Cod sursa (job #431737) | Cod sursa (job #1215546) | Cod sursa (job #1171691)
#include <fstream>
#include <iostream>
#include <string.h>
using namespace std;
const int Nmax = 1000033;
typedef long long ll;
int E[Nmax][3];
int col[Nmax];
int nxt[Nmax];
inline int min (int x, int y) { return x < y ? x : y; }
/*
int last(int x)
{
if (x != nxt[x])
nxt[x] = last(nxt[x]);
return nxt[x];
}
*/
int main()
{
ifstream f ("curcubeu.in");
ofstream g ("curcubeu.out");
int N, A, B, C;
f >> N >> A >> B >> C;
for (int i = 1; i < N; i++)
{
nxt[i] = i;
E[i][0] = A;
E[i][1] = B;
E[i][2] = C;
A = (1ll*A*(i+1)) % N;
B = (1ll*B*(i+1)) % N;
C = (1ll*C*(i+1)) % N;
}
for (int i = N; i < N+10; i++)
nxt[i] = i;
memset(col, 0, sizeof(col));
for (int i = N-1; i >= 1; i--)
{
int x = min(E[i][0], E[i][1]);
int y = E[i][0] + E[i][1] - x;
int z = E[i][2];
while(x <= y)
{
if (!col[x])
{
col[x] = z;
nxt[x] = y+1;
x++;
}
else
{
x = nxt[x];
}
}
}
for (int i = 1; i < N; i++)
g << col[i] << '\n';
return 0;
}