Pagini recente » Cod sursa (job #1461592) | Cod sursa (job #853894) | Cod sursa (job #2842890) | Istoria paginii runda/emag_cex_oni_liceu_avansati_2022/clasament | Cod sursa (job #133576)
Cod sursa(job #133576)
#include <cstdio>
#include <cstring>
using namespace std;
#define FIN "schi.in"
#define FOUT "schi.out"
#define MAX_N 1 << 16
int N;
short A[MAX_N >> 1];
short C[MAX_N >> 1];
short p[MAX_N >> 1];
void insert(int p)
{
for(; p < N + 10; p += ((p - 1) & p) ^ p) ++C[p];
}
int erase(int p)
{
int r = 0;
for(; p > 0; p -= ((p - 1) & p) ^ p) r += C[p];
return r;
}
int main()
{
freopen(FIN, "r", stdin);
freopen(FOUT, "w", stdout);
int i, a, b;
scanf("%d", &N);
for(i = 0; i < N; ++i) scanf("%d", A + i);
for(i = N - 1; i >= 0; --i)
{
a = A[i];
for(b = a + erase(a);;)
{
int best = erase(b)-erase(a);
if(best > 0)
{
a = b; b += best;
}
else break;
}
p[b] = i + 1;
insert(b);
}
for(i = 1; i <= N; ++i)
printf("%d\n", p[i]);
return 0;
}