Pagini recente » Profil YoloGod551 | Cod sursa (job #2702327) | Cod sursa (job #2052798) | Cod sursa (job #1138661) | Cod sursa (job #1425536)
#include <fstream>
#define ub(i) i&(-i)
#define nmax 30010
using namespace std;
ifstream f("schi.in");
ofstream g("schi.out");
int v[nmax],aib[nmax];
int n,sol[nmax];
int aibsum(int poz)
{
int sum=0;
for (;poz>=1;poz-=ub(poz))
sum+=aib[poz];
return sum;
}
void aibadd(int poz,int val)
{
for (;poz<=n;poz+=ub(poz))
aib[poz]+=val;
}
int main()
{
int i,j,x,st,dr;
f>>n;
for (i=1;i<=n;i++)
f>>v[i];
for (i=1;i<=n;i++)
aibadd(i,1);
for (i=n;i>=1;i--) {
st=1,dr=n;
while(st<=dr){
int mij=(st+dr)>>1;
if(aibsum(mij)>=v[i])
dr=mij-1;
else
st=mij+1;
}
sol[st]=i;
aibadd(st,-1);
}
for (i=1;i<=n;i++)
g<<sol[i]<<'\n';
return 0;
}