Pagini recente » Cod sursa (job #3328949) | Cod sursa (job #2633769) | Cod sursa (job #1594112) | Cod sursa (job #3350933) | Cod sursa (job #3338878)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
int M;
int n;
int a[100];
int r[100];
int b[100];
void u(int p, int v) {
for (int i=p; i<=n; i+=i&-i)
b[i]+=v;
}
int s(int p) {
int t=0;
for (int i=p; i>0; i-=i&-i)
t+=b[i];
return t;
}
int f(int k) {
int l=1, d=n, p=0;
while (l<=d) {
int m=(l+d)/2;
if (s(m)>=k) {
p=m;
d=m-1;
} else {
l=m+1;}}
return p;
}
int main() {
fin >> n;
for (int i=1; i<=n; i++)
fin>>a[i];
for (int i=1; i<=n; i++)
u(i, 1);
for (int i=n; i>=1; i--) {
int p=f(a[i]);
r[p]=i;
u(p, -1);
}
for (int i=1; i<=n; i++)
fout<<r[i]<<endl;
return 0;
}