Pagini recente » Borderou de evaluare (job #1558881) | Cod sursa (job #2402179) | Cod sursa (job #1624523) | Cod sursa (job #1665913) | Cod sursa (job #1146557)
#include<fstream>
using namespace std;
#define max_n 1000010
ifstream f("curcubeu.in");
ofstream g("curcubeu.out");
int n , A[max_n] , B[max_n] , C[max_n];
int st , dr , Color[max_n] , Jump[max_n];
void read(){
f>>n>>A[1]>>B[1]>>C[1];
}
int minim( int a , int b ){
return a < b ? a : b;
}
int maxim( int a , int b ){
return a > b ? a : b;
}
int main(){
read();
for( int i = 2 ; i < n ; i++ ){
A[i] = ( (long long)A[i-1] * i ) % n;
B[i] = ( (long long)B[i-1] * i ) % n;
C[i] = ( (long long)C[i-1] * i ) % n;
}
for( int i = n - 1 ; i >= 1 ; i-- ){
st = minim( A[i] , B[i] );
dr = maxim( A[i] , B[i] );
while( st <= dr ){
if( Jump[st] != 0 ){
st = Jump[st];
Jump[st] = maxim(dr + 1 , Jump[st]);
}
else{
Color[st] = C[i];
Jump[st] = dr + 1;
st++;
}
}
}
for( int i = 1 ; i < n ; i++ )
g<<Color[i]<<"\n";
return 0;
}