Cod sursa(job #2989298)

Utilizator DKMKDMatei Filibiu DKMKD Data 6 martie 2023 12:44:06
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;

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

int n;
int aint[100005],v[30005],sol[30005];
void read(){
  fin>>n;
}
void build(int nod,int st,int dr){
  if(st==dr){
    aint[nod]=1;
    return;
  }
  else{
    int mij=(st+dr)/2;
    build(2*nod,st,mij);
    build(2*nod+1,mij+1,dr);
    aint[nod]=aint[2*nod]+aint[2*nod+1];
  }
}
int Update(int nod,int st,int dr,int x){
  int rez;
  if(st==dr){
    aint[nod]=0;
    return st;
  }
  int mij=(st+dr)/2;
  if(aint[2*nod]>=x)
    rez=Update(2*nod,st,mij,x);
  else rez=Update(2*nod+1,mij+1,dr,x-aint[2*nod]);
  aint[nod]--;
  return rez;
}
void solve(){
  build(1,1,n);
  for(int i=1;i<=n;++i)
    fin>>v[i];
  for(int i=n;i>=1;--i)
    sol[Update(1,1,n,v[i])]=i;
  for(int i=1;i<=n;++i)
    fout<<sol[i]<<"\n";
}
int main(){
 read();
 solve();
 return 0;
}