Pagini recente » Cod sursa (job #2168590) | Cod sursa (job #2752823)
#include <bits/stdc++.h>
using namespace std;
ifstream in("schi.in");
ofstream out("schi.out");
const int N=1<<18;
int t[N],poz,ord,clasament[30001];
void actual(int p, int st, int dr)
{
t[p]++;
if(st==dr)
{
clasament[st]=poz;
return;
}
int m=(st+dr)/2;
if(ord<=(m-st+1)-t[2*p])
{
actual(2*p, st, m);
}
else
{
ord-=(m-st+1)-t[2*p];
actual(2*p+1, m+1, dr);
}
}
int val[30001];
int main()
{
int n;
in>>n;
for(int i=1; i<=n; i++)
{
in>>val[i];
}
for(int i=n; i>=1; i--)
{
ord=val[i];
poz=i;
actual(1, 1, n);
}
for(int i=1; i<=n; i++)
{
out<<clasament[i]<<endl;
}
return 0;
}