Pagini recente » Cod sursa (job #520785) | Cod sursa (job #1972861) | Cod sursa (job #439644) | Cod sursa (job #3216216) | Cod sursa (job #2966112)
#include <fstream>
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] << "\n";
}
return 0;
}