Pagini recente » Cod sursa (job #169111) | Cod sursa (job #2351747) | Cod sursa (job #2931230) | Cod sursa (job #635957) | Cod sursa (job #2124335)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
int n,a[30005],aib[30005],sol[30005];
void Update(int p,int x)
{
while(p<=n)
{
aib[p]+=x;
p+=(p&(-p));
}
}
int Query(int p)
{
int s=0;
while(p>0)
{
s+=aib[p];
p-=(p&(-p));
}
return s;
}
int CB(int x)
{
int st,dr,mij,s,poz;
st=1;dr=n;
while(st<=dr)
{
mij=(st+dr)/2;
s=Query(mij);
if(s==x){poz=mij;dr=mij-1;}
else if(s>x)dr=mij-1;
else st=mij+1;
}
return poz;
}
int main()
{
fin>>n;
for(int i=1;i<=n;i++)
{
fin>>a[i];
Update(i,1);
}
int x;
for(int i=n;i>=1;i--)
{
x=CB(a[i]);
sol[x]=i;
Update(x,-1);
}
for(int i=1;i<=n;i++)
fout<<sol[i]<<"\n";
return 0;
}