Cod sursa(job #2998355)

Utilizator Danut200333Dumitru Daniel Danut200333 Data 9 martie 2023 12:34:13
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>

using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
int aib[30001],n,yo,va[30001],sol[30001],i,pos;
void update(int p,int a)
{
    int i;
    for(i=p;i<=n;i+=(i&-i))aib[i]+=a;
}
int suma(int p)
{
    int s=0,i;
    for(i=p;i>0;i-=(i&-i))s+=aib[i];
    return s;
}
int cb(int a)
{
    int st,dr,mid;
    st=1;dr=n;
    while(st<=dr)
    {
        mid=(st+dr)/2;
        if(suma(mid)<a)st=mid+1;
        else dr=mid-1;
    }
    return st;
}
int main()
{
    fin>>n;
    for(i=1;i<=n;i++)
    {
        fin>>va[i];
        update(i,1);
    }
    for(i=n;i>=1;i--)
    {
        pos=cb(va[i]);
        sol[pos]=i;
        update(pos,-1);
    }
    for(i=1;i<=n;i++)fout<<sol[i]<<'\n';
    return 0;
}