Pagini recente » Autentificare | Cod sursa (job #864989) | Cod sursa (job #1391761) | Cod sursa (job #2239389) | Cod sursa (job #3248298)
#include <fstream>
using namespace std;
int aib[30005], n, i, x, v[30005], viz[30005];
void update(int ind)
{
while (ind <= n)
{
aib[ind]++;
ind += ind & -ind;
}
}
int query(int ind)
{
int rez = 0;
while (ind)
{
rez+=aib[ind];
ind -= ind&-ind;
}
return rez;
}
int main()
{
ifstream cin("schi.in");
ofstream cout("schi.out");
cin >> n;
for (i = 1; i <= n; i++)
{
cin >> v[i];
}
for (i = n; i > 0; i--)
{
int st = 1, dr = n, pos = 0;
while (st <= dr)
{
int mij = (st + dr)/2;
if (mij - query(mij) >= v[i])
{
pos = mij;
dr = mij - 1;
}
else st = mij + 1;
}
update(pos);
viz[pos] = i;
}
for (i = 1; i <= n; i++) cout << viz[i] << '\n';
return 0;
}