Pagini recente » Cod sursa (job #2695729) | Cod sursa (job #2030062) | Cod sursa (job #2726573) | Cod sursa (job #1169513) | Cod sursa (job #3138287)
#include <fstream>
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
int v[30000], arb[60001], n;
void adaugare(int poz, int l, int r, int i, int sarite){
if( poz >= n ){
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]++;
}
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);
}
for( i = n; i < 2*n; i++ ){
fout<<arb[i]<<'\n';
}
return 0;
}