Pagini recente » Cod sursa (job #2527458) | Cod sursa (job #2571111) | Cod sursa (job #3275277) | Cod sursa (job #3290923) | Cod sursa (job #3289394)
//https://infoarena.ro/problema/schi
//#pragma GCC optimize ("Ofast")
//#pragma GCC optimize ("fast-math")
//#pragma GCC optimize ("unroll-loops")
//#define _USE_MATH_DEFINES
#include <iostream>
#include <fstream>
#include <vector>
//#include <cstring>
//#include <cmath>
//#include <bitset>
//#include <queue>
//#include <utility>
//#include <algorithm>
//#include <string>
//#include <map>
//#include <climits>
//#include <iomanip>
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
int a[30005], pos[30005], rez[30005], n;
void scade(int p)
{
for (int i = p; i <= n; i += i & (-i))
{
--a[i];
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int i, j, p, putd;
fin >> n;
for (i = 1; i <= n; ++i)
{
fin >> pos[i];
a[i] = i & (-i);
}
for (putd = 1; putd <= n; putd = putd << 1);
putd = putd >> 1;
for (i = n; i >= 1; --i)
{
for (j = 0, p = putd; p; p = p >> 1)
{
if ((j + p <= n) && (a[j + p] < pos[i]))
{
j += p;
pos[i] -= a[j];
}
}
++j;
//cout << j << " ";
rez[j] = i;
scade(j);
}
for (i = 1; i <= n; ++i)
fout << rez[i] << "\n";
return 0;
}