Pagini recente » Cod sursa (job #18556) | Cod sursa (job #1227128) | Cod sursa (job #2504914) | Cod sursa (job #2563807) | Cod sursa (job #2214785)
#include <fstream>
#define zeros(x) (x ^ (x-1)) & x
using namespace std;
ifstream cin("schi.in");
ofstream cout("schi.out");
int aib[30005],n,i,v[30005],solutie[30005];
void Update(int x,int quantity){
int i;
for(i = x;i <= n;i+=zeros(i)){
aib[i] += quantity;
}
}
int sum(int x){
int i,sol = 0;
for(i = x;i > 0;i -= zeros(i)){
sol += aib[i];
}
return sol;
}
int bs(int val){
int pas = 1 << 14;
int r = 0;
while(pas){
if(r+pas <= n && aib[r+pas] < val){
val-=aib[r+pas];
r+=pas;
}
pas/=2;
}
return r+1;
}
int main()
{
cin >> n;
for(i = 1;i <= n;i++){
cin >> v[i];
}
for(i = 1;i <= n;i++){
Update(i,1);
}
for(i = n;i >= 1;i--){
int x = bs(v[i]);
Update(x,-1);
solutie[x] = i;
}
for(i = 1;i <= n;i++){
cout << solutie[i] << "\n";
}
return 0;
}