Pagini recente » Cod sursa (job #2248836) | Cod sursa (job #1951893) | Solutii preONI 2008, Runda 4 | Cod sursa (job #2633499) | Cod sursa (job #2502978)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("schi.in");
ofstream fout("schi.out");
int n;
struct lis{
lis *fo, *ba;
int v;
lis(int v) : v(v){
fo = ba = this;
}
};
lis *fi;
void ard(int p, int v){
if(v == 1){
fi = new lis(v);
}else{
lis *cu = fi;
lis *nu = new lis(v);
if(p <= v/2){
for(int i = 2; i <= p; i++){
cu = cu->fo;
}
}else{
for(int i = v; i > p; i--){
cu = cu->ba;
}
}
nu->fo = cu;
nu->ba = cu->ba;
nu->fo->ba = nu;
nu->ba->fo = nu;
if(p == 1){
fi = nu;
}
}
}
void tez(int a){
lis *cu = fi;
for(int i = 1; i <= a; i++){
cout << cu->v << " ";
cu = cu->fo;
}
cout << "\n";
}
int main(){
fin >> n;
for(int i = 1; i <= n; ++i){
int p;
fin >> p;
ard(p, i);
}
lis *cu = fi;
for(int i = 1; i <= n; i++){
fout << cu->v << "\n";
cu = cu->fo;
}
return 0;
}