Pagini recente » Cod sursa (job #2135077) | Cod sursa (job #822277) | Cod sursa (job #1673366) | Cod sursa (job #908651) | Cod sursa (job #44163)
Cod sursa(job #44163)
#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
{
int size = P.size()-A[i]+1;
if ( A[i] == 1 ) P.push_front(i);
else if ( P.size()-A[i]+1 < A[i]-1 ) // sterg de la dreapta la stanga
{
//printf("1 %d|", size );
int z=0;
for ( it = P.end()-1, z = 1; z <= size; it--, z++ )
{
// printf("%d ", *it);
aux[z] = *it;
P.pop_back();
}
P.push_back(i);
for ( int j = size; j >= 1; j-- )
P.push_back(aux[j]);
//printf(" | ");
}
else // sterg de la stanga la dreapta
{
// printf("2 |");
int z=0;
for ( it = P.begin(), z = 1; z < A[i]; 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 ", *it);
printf("\n");*/
}
for ( it = P.begin(); it != P.end(); it++ )
printf("%d\n", *it);
}