Pagini recente » Cod sursa (job #1729137) | Cod sursa (job #1066078) | Rating rares dolga (raresdolga) | Cod sursa (job #2033184) | Cod sursa (job #2708030)
#include <bits/stdc++.h>
using namespace std;
ifstream f("curcubeu.in");
ofstream g("curcubeu.out");
const int Max = 1e6 + 1;
void nos()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
}
#define color first
#define time second
int n,a,b,c;
struct timestamp
{
int time;
int color;
int endd;
bool end_this;
} drum[Max];
int timp;
void read()
{
f>>n>>a>>b>>c;
}
pair < int, int > ans;
void solve()
{
int i;
timp = 1;
drum[min(a,b)].color = c;
drum[min(a,b)].time = timp;
drum[max(a,b)+1].endd = timp;
drum[max(a,b)+1].color = -1;
for(i=2; i<n; i++)
{
timp = i;
a = (1LL*a * i) % n;
b = (1LL*b * i) % n;
c = (1LL*c * i) % n;
drum[min(a,b)].color = c;
drum[min(a,b)].time = timp;
drum[max(a,b)+1].endd = timp;
drum[max(a,b)+1].end_this = 1;
// cout<<a<<' '<<b<<' '<<c<<'\n';
}
int current_color = 0;
priority_queue < pair < int , int > > incepute;
unordered_set < int > de_scos;
for(i=1;i<n;i++)
{
// cout<<"here";
if(drum[i].color >= 1)
incepute.push({drum[i].time,drum[i].color});
if(drum[i].end_this)
de_scos.insert(drum[i].endd);
while(!incepute.empty() and de_scos.find(incepute.top().first)!=de_scos.end() )
incepute.pop();
if(!incepute.empty())
current_color = incepute.top().second;
else
current_color = 0;
g<<current_color<<'\n';
}
}
void restart()
{
}
int32_t main()
{
nos();
read();
solve();
restart();
return 0;
}