Pagini recente » Cod sursa (job #2101370) | Cod sursa (job #1005100) | Cod sursa (job #2593593) | Cod sursa (job #215121) | Cod sursa (job #1388825)
#include <fstream>
#include <algorithm>
#define zeros(x) ((x^(x-1))&x)
using namespace std;
ifstream f("schi.in");
ofstream g("schi.out");
int n,v[30001],aib[30001],y,pi,i;
void adauga(int poz,int val)
{
int i;
for (i=poz;i<=n;i+=zeros(i))
aib[i]+=val;
}
struct sol{int i,j;};
sol vec[30001];
int cauta(int x)
{
int i,p=pi;
for (i=0;p;p>>=1)
if (i+p<=n)
if (aib[i+p]<x)
i+=p,x-=aib[i];
return i+1;
}
bool cmp(sol a,sol b)
{
return a.i<b.i;
}
int main()
{
f>>n;
for (i=1;i<=n;i++)
f>>v[i],adauga(i,1);
for(pi=1;pi<n;pi<<=1);
for (i=n;i>=1;i--)
{
y=cauta(v[i]);
vec[i].i=y,vec[i].j=i;
adauga(y,-1);
}
sort(vec+1,vec+n+1,cmp);
for (i=1;i<=n;i++)
g<<vec[i].j<<'\n';
return 0;
}