Cod sursa(job #1278666)

Utilizator catalincraciunCraciun Catalin catalincraciun Data 29 noiembrie 2014 10:28:00
Problema Curcubeu Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
/// Craciun Catalin
///  Curcubeu
#include <iostream>
#include <fstream>

#define ll long long
#define NMax 1000005
#define make_muchie muchie

struct muchie {

    ll first, last;
    ll culoare;
    muchie() {
        first = last = culoare = 0;
    }
    muchie(ll a, ll b, ll c) {
        first = a;
        last = b;
        culoare = c;
    }
};

using namespace std;

ifstream f("curcubeu.in");
ofstream g("curcubeu.out");

ll n;
muchie M[NMax];
int cul[NMax];

inline int minim(int a, int b) { if (a < b) return a; return b; };
inline int maxim(int a, int b) { if (a > b) return a; return b; };

void read() {

    f>>n;
    f>>M[1].first>>M[1].last>>M[1].culoare;
    for (int j=minim(M[1].first, M[1].last);j<=maxim(M[1].last, M[1].first);j++)
            cul[j] = M[1].culoare;
    for (int i=2;i<n;i++) {
        M[i] = make_muchie(minim((M[i-1].first * i) % n, (M[i-1].last * i) % n), maxim((M[i-1].first * i) % n, (M[i-1].last * i) % n), (M[i-1].culoare * i) % n);
        for (int j=M[i].first;j<=M[i].last;j++)
            cul[j] = M[i].culoare;
    }

    for (int i=1;i<n;i++)
        g<<cul[i]<<'\n';
}

int main() {

    read();

    f.close(); g.close();
    return 0;
}