Pagini recente » Cod sursa (job #2377720) | Cod sursa (job #188301) | Cod sursa (job #967652) | Cod sursa (job #532178) | Cod sursa (job #214702)
Cod sursa(job #214702)
#include<iostream>
#include<fstream>
#define form ((p^(p-1))&p)
//schi rez cu aib;
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
int n,a[30001],b[30001],c[30001];
void modificare(int p,int x){
while(p<=n){
c[p]+=x;
p+=form;
}
}
int suma(int p){
int s=0;
while(p>0){
s+=c[p];
p-=form;
}
return s;
}
int minim(int x){
int step,i;
for(step=1;step<n;step<<=1);
for(i=n;step;step>>=1)
if(i-step>=1)
if(x<=suma(i-step))
i-=step;
return i;
}
void citire(){
fin>>n;
for(int i=1;i<=n;i++)
fin>>a[i];
}
void parc(){
int k;
for(int i=1;i<=n;i++)
modificare(i,1);
for(int i=n;i;i--){
k=minim(a[i]);
b[k]=i;
modificare(k,-1);
}
}
void afisare(){
for(int i=1;i<=n;i++)
fout<<b[i]<<"\n";
}
int main (){
citire();
parc();
afisare();
return 0;
}