Pagini recente » Cod sursa (job #2961291) | Cod sursa (job #2662869) | Cod sursa (job #2348855) | Cod sursa (job #2246548) | Cod sursa (job #3260355)
#include <bits/stdc++.h>
#define VMAX 100000
#define NMAX 30000
#define LOG 20
#define INF (long long)(1e9)
#define MOD 100003
#define BASE 23
#define BLOCK_SIZE 230
#define ll long long int
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
int a[NMAX+1];
int q[NMAX+1];
int n;
int aib[NMAX+1];
void update(int p,int x)
{
for(int i=p;i<=n;i+=i&-i)
{
aib[i] += x;
}
}
int main()
{
fin >> n;
for(int i=1;i<=n;i++)
{
fin >> q[i];
update(i,1);
}
for(int i=n;i>=1;i--)
{
int pos=0,sum=0;
for(int j=LOG;j>=0;j--)
{
if(pos+(1<<j) <= n && sum + aib[pos + (1<<j)] < q[i])
{
pos += 1<<j;
sum += aib[pos];
}
}
a[pos+1]=i;
update(pos+1,-1);
}
for(int i=1;i<=n;i++)
{
fout << a[i] << "\n";
}
/// 3 4 2 1 2
///
}