Pagini recente » Cod sursa (job #1818523) | Cod sursa (job #2660752) | Cod sursa (job #115411) | Cod sursa (job #1498300) | Cod sursa (job #2759311)
#include <fstream>
#define M 2<<16
#define N 30001
using namespace std;
ifstream cin("schi.in");
ofstream cout("schi.out");
int v[N],sol[N];
int t[M],x;
void actualizare(int p, int st , int dr, int poz , int concurent){
t[p]++;
if(st==dr){
sol[st]=concurent;
return;
}
int m=(st+dr)/2, fs=2*p , fd=2*p+1;
if(poz<=m-st+1-t[fs]){
actualizare(fs,st,m,poz,concurent);
}
else{
actualizare(fd,m+1,dr,poz-(m-st+1-t[fs]),concurent);
}
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>v[i];
}
for(int i=n;i>=1;i--){
actualizare(1,1,n,v[i],i);
}
for(int i=1;i<=n;i++){
cout<<sol[i]<<'\n';
}
return 0;
}