Pagini recente » Cod sursa (job #2764714) | Cod sursa (job #1792047) | Cod sursa (job #1820630) | Cod sursa (job #2258733) | Cod sursa (job #3258834)
#include <bits/stdc++.h>
#define MAXN 30000
using namespace std;
int n , v[MAXN + 1] , ans[MAXN + 1] , aib[MAXN + 1];
void update( int pos ) {
do {
aib[pos]++;
pos += pos & -pos;
} while( pos <= n );
}
int query( int pos ) {
int ans;
ans = 0;
while( pos ) {
ans += aib[pos];
pos &= pos - 1;
}
return ans;
}
int main() {
ifstream cin( "schi.in" );
ofstream cout( "schi.out" );
int st , dr , mij , i;
cin >> n;
for( i = 1 ; i <= n ; i++ )
cin >> v[i];
for( i = n ; i >= 1 ; i-- ) {
st = 0;
dr = n + 1;
while( dr - st > 1 ) {
mij = ( st + dr ) / 2;
if( mij - query( mij ) < v[i] )
st = mij;
else
dr = mij;
}
ans[dr] = i;
update( dr );
}
for( i = 1 ; i <= n ; i++ )
cout << ans[i] << '\n';
return 0;
}