Cod sursa(job #2502978)

Utilizator CyborgSquirrelJardan Andrei CyborgSquirrel Data 2 decembrie 2019 00:50:45
Problema Schi Scor 65
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#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;
}