Pagini recente » Cod sursa (job #1039677) | Cod sursa (job #1252219) | Cod sursa (job #668218) | Cod sursa (job #2064596) | Cod sursa (job #1842221)
#include <cstdio>
using namespace std;
int v[150000];
int org[30001];
int rv[30001];
int n;
int rez;
int nr;
void querry(int pos, int st, int dr)
{
v[pos]++;
if(st != dr)
{
int mid = (st + dr) / 2;
int slotst = mid - st + 1 - v[pos * 2];
if(slotst >= nr)
querry(pos * 2, st, mid);
else
{
nr -= slotst;
querry(pos * 2 + 1, mid + 1, dr);
}
} else rez = st;
}
int main()
{
int i;
freopen("schi.in", "r", stdin);
freopen("schi.out", "w", stdout);
scanf("%d", &n);
for(i = 1; i <= n; i++)
{
scanf("%d", &org[i]);
}
for(i = n; i >= 1; i--)
{
nr = org[i];
querry(1, 1, n);
rv[rez] = i;
}
for(i = 1; i <= n; i++)
{
printf("%d\n", rv[i]);
}
return 0;
}