Cod sursa(job #2400127)

Utilizator shantih1Alex S Hill shantih1 Data 8 aprilie 2019 13:08:29
Problema Schi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream>
#define nmx 30005

using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");

int n,i,j,nr,k;
int v[nmx],ct[4*nmx],rz[nmx];

void build(int n,int l,int r)
{
    if(l==r)
    {
        ct[n]=1;
        return;
    }
    int m=(l+r)/2;
    build(2*n, l, m);
    build(2*n+1,m+1,r);

    ct[n]=ct[2*n]+ct[2*n+1];
}

void update(int n,int l,int r,int val)
{
    if(l==r)
    {
        rz[l]=i;
        ct[n]=0;
        return;
    }
    int m=(l+r)/2;
    if(ct[2*n]>=val)    update(2*n,l,m,val);
    else    update(2*n+1,m+1,r,val-ct[2*n]);

    ct[n]=ct[2*n]+ct[2*n+1];
}

int main()
{
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>v[i];

    build(1,1,n);

    for(i=n;i>=1;i--)
        update(1,1,n,v[i]);

    for(i=1;i<=n;i++)
        fout<<rz[i]<<"\n";
}