Cod sursa(job #3338881)

Utilizator malendraecaterinaMalendra Ecaterina malendraecaterina Data 5 februarie 2026 12:54:18
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>
using namespace std;

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

const int M=30005;
int n;
int a[M];
int r[M];
int b[M];

void u(int p, int v) {
    for (int i=p; i<=n; i+=i&-i) 
        b[i]+=v;
}

int s(int p) {
    int t=0;
    for (int i=p; i>0; i-=i&-i) 
        t+=b[i];
    return t;
}

int f(int k) {
    int l=1, d=n, p=0;
    while (l<=d) {
        int m=(l+d)/2;
        if (s(m)>=k) {
            p=m;
            d=m-1;
        } else {
            l=m+1;}}
    return p;
}

int main() {
    fin >> n;
    for (int i=1; i<=n; i++) 
        fin>>a[i];

    for (int i=1; i<=n; i++) 
        u(i, 1);

    for (int i=n; i>=1; i--) {
        int p=f(a[i]);
        r[p]=i;
        u(p, -1);
    }

    for (int i=1; i<=n; i++) 
        fout<<r[i]<<endl;

    return 0;
}