Cod sursa(job #3268908)

Utilizator Ics.maker09Iancu Cezar-Stefan Ics.maker09 Data 18 ianuarie 2025 00:16:05
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("schi.in");
ofstream g("schi.out");
int n,i,x;
vector<int>a,v,r;

void add(int ind,int x) {
    for(int i=ind;i<=n;i+=(i&(-i)))
        a[i]+=x;
}

int sum(int ind) {
    int s=0;
    for(int i=ind;i>=1;i-=(i&(-i)))
        s+=a[i];
    return s;
}

int cb(int x) {
    int st=1,dr=n,poz=-1,mij,nr;
    while(st<=dr) {
        mij=(st+dr)/2;
        nr=sum(mij);
        if(x>nr)
            st=mij+1;
        else if(nr>x)
            dr=mij-1;
        else {
            poz=mij;
            dr=mij-1;
        }
    }
    return poz;
}

int main() {
    f>>n;
    v.resize(n+1);
    a.resize(n+1);
    r.resize(n+1);
    for(i=1;i<=n;i++) {
        f>>v[i];
        add(i,1);
    }
    for(i=n;i>=1;i--) {
        x=cb(v[i]);
        r[x]=i;
        add(x,-1);
    }
    for(i=1;i<=n;i++)
        g<<r[i]<<'\n';

    return 0;
}