Cod sursa(job #1549630)

Utilizator ASTELOTudor Enescu ASTELO Data 12 decembrie 2015 15:57:40
Problema Schi Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#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;
    while(nr!=find(m+nr))
        nr=find(m+nr);
    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;
}