Pagini recente » Cod sursa (job #916810) | Cod sursa (job #1470042)
#include<fstream>
using namespace std;
#define NMAX 30005
ifstream fin("schi.in");
ofstream fout("schi.out");
int n,x,A[NMAX],AIB[NMAX],C[NMAX];
inline void update(int p, int x)
{
for (;p<=n;p+=(p&-p))
AIB[p]+=x;
}
inline int suma(int p)
{
int s=0;
for (;p>0;p-=(p&-p))
s+=AIB[p];
return s;
}
inline int cb(int p)
{
int st=1,dr=n,mij;
while (st<=dr)
{
mij=(st+dr)>>1;
if (suma(mij)<p)
st=mij+1;
else
dr=mij-1;
}
return st;
}
int main()
{
int i;
fin>>n;
for (i=1;i<=n;++i)
{
fin>>A[i];
update(i,1);
}
for (i=n;i>0;--i)
{
x=cb(A[i]);
C[x]=i;
update(x,-1);
}
for (i=1;i<=n;++i)
fout<<C[i]<<"\n";
return 0;
}