Pagini recente » Cod sursa (job #943917) | Monitorul de evaluare | Cod sursa (job #532843) | Monitorul de evaluare | Cod sursa (job #581714)
Cod sursa(job #581714)
#include <fstream.h>
ifstream fin("schi.in");
ofstream fout("schi.out");
const int r=30001;
int n,v[4*r],i,x;
int s[r],sol[r];
void update (int poz, int ls, int ld) {
int h;
if (ls==ld)
{
v[poz]=1;
return;
}
h=(ls+ld)/2;
update(2*poz, ls, h);
update(2*poz+1, h+1, ld);
v[poz]=v[2*poz]+v[2*poz+1];
}
void query(int poz, int ls, int ld, int x) {
int h;
if (ls==ld)
{
sol[ls]=i;
v[poz]=0;
return;
}
h=(ls+ld)/2;
if (v[2*poz]>=x) query(2*poz, ls, h, x);
else query(2*poz+1, h+1, ld, x-v[2*poz]);
v[poz]=v[2*poz]+v[2*poz+1];
}
int main() {
fin>>n;
update(1,1,n);
for (i=1;i<=n;i++)
fin>>s[i];
for (i=n;i>=1;i--)
query(1,1,n,s[i]);
for (i=1;i<=n;i++)
fout<<sol[i]<<"\n";
return 0;
}