Pagini recente » Cod sursa (job #1449978) | Cod sursa (job #931808) | Cod sursa (job #1325510) | Cod sursa (job #1854650) | Cod sursa (job #3316537)
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
ifstream fin("curcubeu.in");
ofstream fout("curcubeu.out");
struct Operatie {
int index;
int culoare;
};
int main() {
int N,A,B,C;
fin>>N>>A>>B>>C;
vector<Operatie> marcari(N+2);
vector<int> rezultat(N,0);
for(int i=1;i<=N-1;++i){
int puncte=min(A,B);
int dreapta=max(A,B);
if(puncte==0) puncte=1;
if(dreapta>=N) dreapta=N-1;
marcari[puncte]={i,C};
marcari[dreapta+1]={-i,C};
A=(1LL*A*(i+1))%N;
B=(1LL*B*(i+1))%N;
C=(1LL*C*(i+1))%N;
}
int operatieCurenta=0;
int culoareCurenta=0;
for(int i=1;i<=N-1;++i){
if(marcari[i].index>0){
operatieCurenta=marcari[i].index;
culoareCurenta=marcari[i].culoare;
}else if(marcari[i].index<0){
if(operatieCurenta==-marcari[i].index){
operatieCurenta=0;
culoareCurenta=0;
}
}
rezultat[i]=culoareCurenta;
}
for(int i=1;i<=N-1;++i){
fout<<rezultat[i]<<"\n";
}
return 0;
}