Cod sursa(job #1490762)

Utilizator tamionvTamio Vesa Nakajima tamionv Data 24 septembrie 2015 08:42:09
Problema Curcubeu Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>
#include <numeric>
#include <utility>
#include <vector>
using namespace std;

constexpr int maxn = 1000000;
 
int main(){
    ifstream f("curcubeu.in");
    ofstream g("curcubeu.out");
    int n, a, b, c;
    f >> n >> a >> b >> c;
	vector<int> a_uri(n, 0), b_uri(n, 0), c_uri(n, 0);
    a_uri[1] = a, b_uri[1] = b, c_uri[1] = c;
    for(long long i = 2; i < n; ++i){
        a_uri[i] = a = (i * a) % n;
        b_uri[i] = b = (i * b) % n;
        c_uri[i] = c = (i * c) % n; }
	vector<int> rez(n, 0), next(n, 0);
    iota(begin(next), end(next), 1);
    for(int i = n-1; i >= 1; --i){
        int st = a_uri[i], dr = b_uri[i], val = c_uri[i];
        if(st > dr){
            swap(st, dr); }
        for(int j = st, nxt; j <= dr; ++j){
			while(j <= dr && next[j] != 0){
				nxt = next[j];
				next[j] = dr;
				j = nxt; }
			if(j <= dr){
				rez[j] = val;
				next[j] = dr; } } }

    for(int i = 1; i < n; ++i){
        g << rez[i] << '\n'; }
    return 0; }