Pagini recente » Cod sursa (job #2367980) | Cod sursa (job #2696614) | Cod sursa (job #2109528) | Cod sursa (job #3273003) | Cod sursa (job #2035248)
#include <fstream>
#define Nmax 30011
using namespace std;
int v[Nmax],aint[4*Nmax],n,poz[Nmax],i;
int update (int st , int dr , int nod)
{
int mij=(st+dr)/2;
if(st==dr)
{
aint[nod]=1;
return 0;
}
aint[nod]=dr-st+1;
update(st,mij,nod*2);
update(mij+1,dr,nod*2+1);
}
int query (int st , int dr , int nod ,int sum)
{
aint[nod]--;
int mij=(st+dr)/2;
if(st==dr)
{
return st;
}
else
if(sum<=aint[nod*2])
{
return query(st,mij,nod*2,sum);
}
else
{
return query(mij+1,dr,nod*2+1,sum-aint[2*nod]);
}
}
int main()
{
ifstream fin ("schi.in");
ofstream fout ("schi.out");
fin>>n;
update(1,n,1);
for(i=1;i<=n;i++)
{
fin>>v[i];
}
for(i=n;i>=1;i--)
{
poz[query(1,n,1,v[i])]=i;
}
for(i=1;i<=n;i++)
{
fout<<poz[i]<<'\n';
}
return 0;
}