Pagini recente » Cod sursa (job #2211337) | Cod sursa (job #2028253) | Cod sursa (job #2055023) | Cod sursa (job #810520) | Cod sursa (job #3316533)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("curcubeu.in");
ofstream fout("curcubeu.out");
struct Op {
int index;
int color;
Op() : index(0), color(0) {}
};
int main() {
int N, A, B, C;
fin >> N >> A >> B >> C;
vector<Op> assign(N + 2);
vector<int> result(N, 0);
for(int i = 1; i <= N - 1; ++i) {
int l = min(A, B);
int r = max(A, B);
if(l == 0)
l = 1;
if(r >= N)
r = N - 1;
assign[l] = {i, C};
assign[r + 1] = {-i, C};
A = (1LL * A * (i + 1)) % N;
B = (1LL * B * (i + 1)) % N;
C = (1LL * C * (i + 1)) % N;
}
int current_op = 0;
int current_color = 0;
for(int i = 1; i <= N - 1; ++i) {
if(assign[i].index > 0)
{
current_op = assign[i].index;
current_color = assign[i].color;
}
else
{
if(assign[i].index < 0)
{
if(current_op == -assign[i].index)
{
current_op = 0;
current_color = 0;
}
}
result[i] = current_color;
}
for (int i = 1; i <= N - 1; ++i) {
fout << result[i] << "\n";
}
return 0;
}