Pagini recente » Cod sursa (job #1115318) | Cod sursa (job #3234850) | Cod sursa (job #2867371) | Cod sursa (job #2702780) | Cod sursa (job #2033057)
#include <fstream>
using namespace std;
ifstream f("schi.in");
ofstream g("schi.out");
int v[120000],poz[30001],n,i,a[30001];
int update(int st,int dr,int nod)
{
int mij=(st+dr)/2;
if(st==dr)
{
v[nod]=1;
return 0;
}
v[nod]=dr-st+1;
update(st,mij,nod*2);
update(mij+1,dr,nod*2+1);
}
int cautare(int st,int dr,int nod,int sum)
{
v[nod]--;
int mij=(st+dr)/2;
if(st==dr)
{
return st;
}
else if(sum<=v[nod*2])
{
return cautare(st,mij,nod*2,sum);
}
else
{
return cautare(mij+1,dr,nod*2+1,sum-v[2*nod]);
}
}
int main()
{
f>>n;
update(1,n,1);
for(i=1;i<=n;i++)
{
f>>a[i];
}
for(i=n;i>=1;i--)
{
poz[cautare(1,n,1,a[i])]=i;
}
for(i=1;i<=n;i++)
{
g<<poz[i]<<'\n';
}
return 0;
}