Pagini recente » Cod sursa (job #1659630) | Cod sursa (job #2315698) | Cod sursa (job #1347174) | Cod sursa (job #3201462) | Cod sursa (job #3226683)
#pragma GCC optimize("O1,O2,O3,Ofast,unroll-loops")
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
string file = "schi";
ifstream fin (file + ".in");
ofstream fout (file + ".out");
int aib[30001],n, v[30001], r[30001];
inline void modificare(int p)
{
while (p<=n)
{
aib[p]--;
p += (p & -p);
}
}
inline int interogare(int p)
{
int s = 0;
while (p)
{
s += aib[p];
p -= (p & -p);
}
return s;
}
inline int cb(int p)
{
int st = 1, dr = n;
while (st<=dr)
{
int mid = (st+dr)/2;
if (interogare(mid) >= p)
{
dr = mid - 1;
}
else
{
st = mid + 1;
}
}
return st;
}
int main()
{
fin >> n;
for (int i=1; i<=n; i++)
{
fin >> v[i];
aib[i] = (i & -i);
}
for (int i=n; i>=1; i--)
{
int p = cb(v[i]);
modificare(p);
r[p] = i;
}
for (int i=1; i<=n; i++)
fout << r[i] << '\n';
}