Pagini recente » Cod sursa (job #572652) | Cod sursa (job #3036549) | Cod sursa (job #2264374) | Cod sursa (job #386582) | Cod sursa (job #3138307)
/*#include <fstream>
#include <vector>
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
vector <int> v;
int main()
{ int n,poz,i;
fin >> n;
for ( i = 1; i <= n; i++) {
fin>>poz;
v.insert(v.begin() + (poz-1), i);
}
for (i = 0; i <n; i++){
fout<<v[i]<<"\n";
}
return 0;
}*/
#include <fstream>
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
int v[30001], arb[120004], n;
void adaugare(int poz, int l, int r, int i, int sarite){
if( l==r ){
arb[poz] = i+1;
return;
}
int mij = ( l + r ) / 2;
if( mij - l + 1 - arb[2*poz] + sarite >= v[i] ){
adaugare(2*poz, l, mij, i, sarite);
}
else{
adaugare(2*poz+1, mij+1, r, i, sarite + mij - l + 1 - arb[2*poz]);
}
arb[poz]++;
}
void afis(int poz, int l, int r){
if( l == r ){
fout<<arb[poz]<<'\n';
return;
}
int mij = (l + r) / 2;
afis(2 * poz, l, mij);
afis(2*poz+1, mij+1, r);
}
int main()
{
int i;
fin>>n;
for( i = 0; i < n; i++ )
fin>>v[i];
for( i = n - 1; i >= 0; i-- ){
adaugare(1, 1, n, i, 0);
}
afis(1, 1, n);
return 0;
}