Pagini recente » Cod sursa (job #1711674) | Cod sursa (job #674093) | bolt | Cod sursa (job #688890) | Cod sursa (job #399403)
Cod sursa(job #399403)
#include<fstream>
using namespace std;
const char iname[]="schi.in";
const char oname[]="schi.out";
const int maxn=30005;
ifstream f(iname);
ofstream g(oname);
int aib[maxn],a[maxn],i,j,n,final[maxn];
void update(int x,int y)
{
for(;x<=n;x+=x&-x)
aib[x]+=y;
}
int query(int x)
{
int step,i;
for(step=1;step<n;step<<=1);
for(i=0;step;step>>=1)
if(i+step<=n&&aib[i+step]<x)
x-=aib[i+step],i+=step;
return i+1;
}
int main()
{
f>>n;
for(i=1;i<=n;++i)
f>>a[i],update(i,1);
for(i=n;i;--i)
j=query(a[i]),update(j,-1),final[j]=i;
for(i=1;i<=n;++i)
g<<final[i]<<"\n";
f.close();
g.close();
return 0;
}