Pagini recente » Cod sursa (job #2672631) | Cod sursa (job #3146944) | Cod sursa (job #2788393) | Cod sursa (job #1912027) | Cod sursa (job #44142)
Cod sursa(job #44142)
#include <stdio.h>
#include <deque>
using namespace std;
#define in "schi.in"
#define out "schi.out"
#define dim 30001
int N;
int A[dim], aux[dim];
deque<int> P;
deque<int>::iterator it;
int main()
{
freopen(in,"r",stdin);
freopen(out,"w",stdout);
scanf("%d", &N);
for ( int i = 1; i <= N; i++ )
scanf("%d", &A[i]);
P.push_back(1);
for ( int i = 2; i <= N; i++ )
{
if ( A[i] > P.size() ) P.push_back(i);
else
{
if ( A[i] == 1 ) P.push_front(i);
else if ( P.size()-A[i]+1 < A[i]-1 ) // sterg de la dreapta la stanga
{
int z=0;
for ( it = P.end()-1, z = 1; z <= P.size()-A[i]+1; it--, z++ )
{
aux[z] = *it;
P.pop_back();
}
P.push_back(i);
for ( int j = 1; j < z; j++ )
P.push_back(aux[j]);
}
else // sterg de la stanga la dreapta
{
int z=0;
for ( it = P.begin(), z = 1; z <= A[i]-1; it++, z++ )
{
aux[z] = *it;
P.pop_front();
}
P.push_front(i);
for ( int j = z-1; j >= 1; j-- )
P.push_front(aux[j]);
}
}
}
for ( it = P.begin(); it != P.end(); it++ )
printf("%d\n", *it);
}