Pagini recente » Cod sursa (job #293508) | Cod sursa (job #1402789) | Cod sursa (job #1709668) | Cod sursa (job #1430736) | Cod sursa (job #1278685)
/// Craciun Catalin
/// Curcubeu
#include <iostream>
#include <fstream>
#define ll long long
#define NMax 1000005
#define make_muchie muchie
struct muchie {
ll first, last;
ll culoare;
muchie() {
first = last = culoare = 0;
}
muchie(ll a, ll b, ll c) {
first = a;
last = b;
culoare = c;
}
};
using namespace std;
ifstream f("curcubeu.in");
ofstream g("curcubeu.out");
ll n;
muchie M[NMax];
int cul[NMax];
int next[NMax];
inline int minim(int a, int b) { if (a < b) return a; return b; };
inline int maxim(int a, int b) { if (a > b) return a; return b; };
void read() {
f>>n;
f>>M[1].first>>M[1].last>>M[1].culoare;
for (int i=2;i<n;i++)
M[i] = make_muchie(minim((M[i-1].first * i) % n, (M[i-1].last * i) % n),
maxim((M[i-1].first * i) % n, (M[i-1].last * i) % n),
(M[i-1].culoare * i) % n);
n--;
}
int main() {
read();
for (int i=n;i>=1;i--) {
int left = M[i].first;
int right = M[i].last;
while (left <= right) {
if (next[left] != 0) {
int aux = next[left];
next[left] = maxim(next[left], right+1);
left = aux;
} else {
cul[left] = M[i].culoare;
next[left] = right+1;
left++;
}
}
}
for (int i=1;i<=n;i++)
g<<cul[i]<<'\n';
f.close(); g.close();
return 0;
}