Pagini recente » Cod sursa (job #3209991) | Cod sursa (job #1087968) | Cod sursa (job #1497768) | Cod sursa (job #1563886) | Cod sursa (job #133624)
Cod sursa(job #133624)
#include <stdio.h>
#define FIN "schi.in"
#define FOUT "schi.out"
#define MAX_N 30005
int N;
short A[MAX_N];
short C[MAX_N];
short p[MAX_N];
inline void insert(int p)
{
for(; p < N + 1; p += ~(p - 1) & p) ++C[p];
}
inline int erase(int p)
{
int r = 0;
for(; p > 0; p -= ~(p - 1) & p) r += C[p]; return r;
}
int main()
{
freopen(FIN, "r", stdin);
freopen(FOUT, "w", stdout);
int i, a, b, j;
scanf("%d\n", &N);
char S[7];
for(i = 0; i < N; ++i)
{
gets (S);
int L = strlen (S);
for (j = 0; j < L; ++j)
A[i] = A[i]*10 + S[j] - '0';
}
int c;
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;
}