Pagini recente » Cod sursa (job #1716387) | Cod sursa (job #2189263) | Cod sursa (job #2038021) | Cod sursa (job #2137864) | Cod sursa (job #587255)
Cod sursa(job #587255)
#include <cstdio>
#include <fstream>
using namespace std;
#define N 32768
int adi[N];
int p;
void init (int k,int ft,int bk){
if(ft==bk){
adi[k]=1;
return;
}
int md=(ft+bk)>>1;
init(k<<1,ft,md);
init((k<<1)+1,md+1,bk);
adi[k]=adi[k<<1]+adi[(k<<1)+1];
}
void srch (int k,int ft,int bk,int x){
if(ft==bk){
p=bk;
adi[k]=0;
return;
}
int md=(ft+bk)>>1 ;
if(x<=adi[k<<1])
srch(k<<1,ft,md,x);
else
srch((k<<1)+1,md+1,bk,x-adi[k<<1]);
adi[k]=adi[k<<1]+adi[(k<<1)+1];
}
int main()
{
int n,r[N],v[N];
ifstream in ("schi.in");
in>>n;
init(1,1,n);
for(int i=1;i<=n;++i)
in>>v[i];
for(int i=n;i;--i){
srch(1,1,n,v[i]);
r[p]=i;
}
freopen ("schi.out","w",stdout);
for(int i=1;i<=n;++i)
printf("%d\n",r[i]);
return 0;}