Pagini recente » Cod sursa (job #2328815) | Cod sursa (job #19492) | Cod sursa (job #777558) | Cod sursa (job #509601) | Cod sursa (job #2052000)
#include <fstream>
using namespace std;
ifstream fin ("schi.in");
ofstream fout ("schi.out");
int n,i,p,u,mid,aib[30010],v[30010],sol[30010];
void update(int p, int x){
for(;p<=n;p+=p&-p)
aib[p]+=x;
}
int query (int p){
int r=0;
for(;p;p-=p&-p)
r+=aib[p];
return r;
}
int main(){
fin>>n;
for(i=1;i<=n;i++){
fin>>v[i];
update(i,1);
}
for(i=n;i>=1;i--){
p=1;
u=n;
while(p<=u){
mid=(p+u)/2;
if(query(mid)<v[i])
p=mid+1;
else
u=mid-1;
}
sol[p]=i;
update(p,-1);
}
for(i=1;i<=n;i++)
fout<<sol[i]<<"\n";
}