Cod sursa(job #2376367)

Utilizator papinub2Papa Valentin papinub2 Data 8 martie 2019 15:10:18
Problema Curcubeu Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

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

struct punct
{
    int minim;
    int maxim;
    int c;
};

int main()
{
    int n, a, b, c;
    in >> n >> a >> b >> c;

    vector<punct> v;
    vector<int> dp(n + 1);
    vector<bool> OK(n + 1);

    for (int i = 1; i < n; i++)
    {
        a = (1LL * a * i) % n;
        b = (1LL * b * i) % n;
        c = (1LL * c * i) % n;

        int minim = min(a, b);
        int maxim = max(a, b);

        v.push_back({minim, maxim, c});
    }

    for (int i = v.size() - 1; i >= 0; i--)
    {
        int minim = v[i].minim;
        int maxim = v[i].maxim;
        int c = v[i].c;

        for (int j = minim; j <= maxim; j++)
            if (OK[j])
                break;
            else
                dp[j] = c, OK[j] = 1;

        for (int j = maxim; j >= minim; j--)
            if (OK[j])
                break;
            else
                dp[j] = c, OK[j] = 1;
    }

    for (int i = 1; i < n; i++)
        out << dp[i] << '\n';

    return 0;
}