Pagini recente » Cod sursa (job #901657) | Cod sursa (job #2041926) | Cod sursa (job #801474) | Cod sursa (job #1511723) | Cod sursa (job #179860)
Cod sursa(job #179860)
# include <stdio.h>
using namespace std;
# define input "schi.in"
# define output "schi.out"
# define max 30001
int a[max],d[max],pos[max];
int i,j,n,x;
# define bit(x) ((x&(x-1))^x)
void update(int val,int x)
{
while(x <= n)
a[x]+=val,
x+= bit(x);
}
int search(int x)
{
int sum, p, putere;
for(putere=1;putere<n;putere <<= 1);
for(sum = 0,p = 0; putere; putere >>= 1)
if(p+putere <= n && sum+a[p+putere] < x) p+=putere,sum+=a[p];
return p;
}
int main()
{
freopen(input,"r",stdin);
freopen(output,"w", stdout);
scanf("%d\n",&n);
for(i = 1; i<= n; i++) scanf("%d\n",&d[i]);
for(i = 1;i <= n; i++) update(1,i);
for(i=n;i;i--)
{
x = search(d[i]) + 1;
pos[x] = i;
update(-1,x);
}
for(i = 1; i <= n; i++) printf("%d\n",pos[i]);
return 0;
}