Pagini recente » Cod sursa (job #797167) | Cod sursa (job #1526663) | Cod sursa (job #142917) | Cod sursa (job #1934375) | Cod sursa (job #3267400)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ifstream f("schi.in");
ofstream g("schi.out");
const int nMax=3e4+5;
ll n , cnt;
ll a[nMax], aib[nMax], rez[nMax];
void add(int x , int val)
{
for(int i=x;i<=n;i+=i&-i) aib[i]+=val;
}
ll sum(int x)
{
ll rez=0;
for(int i=x;i>=1;i-=i&-i) rez+=aib[i];
return rez;
}
int cb(int x)
{
int st=1 , dr=n , rez=0;
while(st<=dr){
int mij=(st+dr)/2;
ll p=sum(mij);
if(p>x) dr=mij-1;
else if(p<x) st=mij+1;
else rez=mij , dr=mij-1;
}
return rez;
}
int main()
{
ios_base::sync_with_stdio(NULL);
f >> n;
for(int i=1;i<=n;i++) f >> a[i] , add(i , 1);
for(int i=n;i>=1;i--){
int k=cb(a[i]);
rez[k]=i;
add(k , -1);
}
for(int i=1;i<=n;i++) g << rez[i] << '\n';
}