Cod sursa(job #3188734)

Utilizator vladsoartavlad sofronea vladsoarta Data 3 ianuarie 2024 19:21:37
Problema Schi Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>

using namespace std;
ifstream cin("schi.in");
ofstream cout("schi.out");

int arb[70002],n,i,v[30001],rsp[30001];

void update(int nod,int st,int dr,int pos,int val)
{if(st==dr)
{
    arb[nod]=val;
    return;
}
int mid=(st+dr)/2;
if(pos<=mid)
    update(nod*2,st,mid,pos,val);
else
    update(nod*2+1,mid+1,dr,pos,val);

arb[nod]=arb[nod*2]+arb[nod*2+1];
}
int querry(int nod,int val)
{if(nod>=n)
return nod-n+1;
    if(arb[nod*2]>=val)
return querry(nod*2,val);
return querry(nod*2+1,val-arb[nod*2]);

}

int main()
{cin>>n;
for(i=1;i<=n;i++)
{cin>>v[i];
    update(1,1,n,i,1);
}

for(i=n;i>=1;i--)
{int poznou = querry(1,v[i]);
update(1,1,n,poznou,0);
    rsp[poznou]=i;
}

for(i=1;i<=n;i++)
    cout<<rsp[i]<<'\n';
    return 0;
}