Pagini recente » Cod sursa (job #1175364) | Cod sursa (job #1784311) | Cod sursa (job #1145183) | Cod sursa (job #631350) | Cod sursa (job #1549637)
#include<cstdio>
#include<algorithm>
using namespace std;
struct eu{int x,y;};
eu vec[100001];
bool sorting(eu a,eu b)
{
if(a.x<b.x)
return 1;
return 0;
}
int v[100001],vc[100001],i,j,n,m,k;
void add(int poz,int val)
{
while(poz<=n)
{
v[poz]+=val;
poz+=poz^(poz&poz-1);
}
}
int find(int poz)
{
int s=0;
while(poz>=1)
{
s+=v[poz];
poz-=poz^(poz&poz-1);
}
return s;
}
int main ()
{
freopen("schi.in","r",stdin);
freopen("schi.out","w",stdout);
scanf("%d",&n);
for(i=n;i>=1;i--)
scanf("%d",&vc[i]);
for(i=1;i<=n;i++)
{
m=vc[i];
int ci=0,nr=0;
ci=find(m+nr);
while(nr!=ci)
{
nr=ci;
ci=find(nr+m);
}
m+=nr;
vec[n-i+1].x=m;
vec[n-i+1].y=n-i+1;
add(m,1);
}
sort(vec+1,vec+n+1,sorting);
for(i=1;i<=n;i++)
printf("%d\n",vec[i].y);
return 0;
}