Pagini recente » Cod sursa (job #2019972) | Monitorul de evaluare | Cod sursa (job #2268985) | Cod sursa (job #2097701) | Cod sursa (job #3323367)
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
ifstream fin("curcubeu.in");
ofstream fout("curcubeu.out");
struct arbore{
long long st,dr,c;
};
int main()
{
long long n,a,b,c;
fin>>n>>a>>b>>c;
vector<arbore>seg;
seg.push_back({a,b,c});
for(long long i=1;i<n-1;i++){
arbore nou = {(seg[i-1].st * (i+1)) % n,(seg[i-1].dr * (i+1)) % n,(seg[i-1].c * (i+1)) % n};
seg.push_back(nou);
//cout<<seg[i-1].st<<'\n';
//cout<<seg[i-1].st * (i+1)<<" "<<(seg[i-1].st * (i+1)) % n;
}
set<long long>valori;
for(long long i=1;i<n;i++){
valori.insert(i);
}
vector<long long>rez(n+1,0);
while(!seg.empty()){
auto aux = seg.back();
seg.pop_back();
long long st = min(aux.st,aux.dr);
long long dr = max(aux.st,aux.dr);
auto it = valori.lower_bound(st);
while(it != valori.end() && *it <= dr){
rez[*it] = aux.c;
it = next(it);
valori.erase(prev(it));
}
}
for(long long i=1;i<n;i++)
fout<<rez[i]<<'\n';
return 0;
}