Cod sursa(job #2376403)

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

using namespace std;

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

struct punct
{
    long long minim;
    long long maxim;
    long long k;
};

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

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

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

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

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

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

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

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

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

    return 0;
}