Cod sursa(job #2625423)

Utilizator albertyoAlbert Mindrescu albertyo Data 5 iunie 2020 22:43:43
Problema Order Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>
using namespace std;

ifstream fin("order.in");
ofstream fout("order.out");

int a[60005], p, n;

void Creare(int nod, int st, int dr) {

    int mij;
    a[nod] = dr - st + 1;

    if( st == dr ) return;

    mij = (st + dr) / 2;

    Creare(2 * nod, st, mij);
    Creare(2 * nod + 1, mij + 1, dr);
}

void Actualizare(int nod, int st, int dr, int poz) {

    int mij;
    if( st == dr ) {

        a[nod] = 0;
        fout << st << " ";
        return;
    }

    mij = (st + dr) / 2;

    if(p <= poz + a[2 * nod])
        Actualizare(2 * nod, st, mij, poz);
    else
        Actualizare(2 * nod + 1, mij + 1, dr, poz + a[2 * nod]);

    a[nod] = a[2 * nod] + a[2 * nod + 1];
}

int main()
{
    int i;
    fin >> n;

    Creare(1, 1, n);

    p = 2;

    for (i = 0; i < n; i++) {

        p = (p + i - 1) % (n - i) + 1;
        Actualizare(1, 1, n, 0);
    }

    return 0;
}