Pagini recente » Cod sursa (job #2104525) | Cod sursa (job #1042247) | Cod sursa (job #741364) | Cod sursa (job #955090) | Cod sursa (job #1549619)
#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 m1=m;
int ci=find(vc[i]);
while(ci!=find(m+ci))
{
int c1i=find(m1+ci);
m1=find(m1+ci);
ci=c1i;
}
m+=ci;
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;
}