Pagini recente » Cod sursa (job #2882877) | Cod sursa (job #1628899) | Cod sursa (job #2446244) | Cod sursa (job #2185174) | Cod sursa (job #3229230)
#include <fstream>
using namespace std;
ifstream fin ("schi.in");
ofstream fout ("schi.out");
int n,i,poz;
int aib[30001],v[30001],sol[30001];
void update (int i,int val)
{
for (; i<=n; i+=(i&-i))
aib[i]+=val;
}
int query (int val)
{
int sum=0,poz=0;
for (int p=14; p>=0; p--)
{
if (poz+(1<<p)<=n&&aib[poz+(1<<p)]+sum<=val)
{
poz+=(1<<p);
sum+=aib[poz];
}
}
return poz+1;
}
int main()
{
fin>>n;
for (i=1; i<=n; i++)
{
fin>>v[i];
update (i,1);
}
for (i=n; i>0; i--)
{
poz=query (v[i]-1);
update (poz,-1);
sol[poz]=i;
}
for (i=1; i<=n; i++)
fout<<sol[i]<<"\n";
return 0;
}