Cod sursa(job #3141918)

Utilizator vladutzu_finutzuVlad Cacenschi vladutzu_finutzu Data 17 iulie 2023 17:49:41
Problema Curcubeu Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("curcubeu.in");
ofstream cout("curcubeu.out");
const int NMAX = 1e6 + 2;
int n;
vector<int> a(1), b(1), c(1);
vector<int> d, next_b;
int c_b(int box, const int limit, const int C){
    if(box >= n)
        return n;

    if(box > limit)
        return (d[box] ? next_b[box] : box);

    if(!d[box])
        d[box] = C;
    
    next_b[box] = c_b(next_b[box], limit, C);
    return next_b[box];
}
int main(){
    cin>>n>>a[0]>>b[0]>>c[0];
    d.resize(n);

    next_b.resize(n+2);
    for(int i=0; i<n; i++)
        next_b[i] = i+1;

    for(int i=1; i<n; i++){
        a.push_back(0);
        b.push_back(0);
        c.push_back(0);

        a[i] = (1LL * a[i-1] * i) % n;
        b[i] = (1LL * b[i-1] * i) % n;
        c[i] = (1LL * c[i-1] * i) % n;
    }

    for(int i=n-1; i>=0; i--){
        c_b(min(a[i], b[i]), max(a[i], b[i]), c[i]);
    }

    for(int i=1; i<n; i++)
        cout<<d[i]<<"\n";

    return 0;
}