Pagini recente » Cod sursa (job #372122) | Cod sursa (job #497510) | Cod sursa (job #3320730) | Cod sursa (job #471074) | Cod sursa (job #3323356)
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
ifstream fin("curcubeu.in");
ofstream fout("curcubeu.out");
struct arbore{
int st,dr,c;
};
int main()
{
int n,a,b,c;
fin>>n>>a>>b>>c;
vector<arbore>seg;
seg.push_back({a,b,c});
for(int 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<int>valori;
for(int i=1;i<n;i++){
valori.insert(i);
}
vector<int>rez(n+1,0);
while(!seg.empty()){
auto aux = seg.back();
seg.pop_back();
int st = min(aux.st,aux.dr);
int 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(int i=1;i<n;i++)
fout<<rez[i]<<'\n';
return 0;
}