program ler_e_imprimir_pares_indices;

const 
	min = 0; 
	max = 200;

type vetor = array [min..max] of longint;

var 
	v : vetor;
	n : longint;
	posicao : longint;

procedure imprimir (var v : vetor; tam : longint);
var i : longint;
begin
	for i:= 1 to tam do
		write (v[i], ' ');
	writeln;
end;

procedure ler (var v : vetor; var tam: longint); (* leitura *)
var i : longint;
begin
	writeln ('Qual o tamanho do vetor? ');
	read (tam); (* 1 <= tam <= 200, define o tamanho util do vetor *)
	for i := 1 to tam do
		read (v[i]);
end;

procedure remove (pos: longint; var v: vetor; var n: longint) ;
var i: integer;
begin
	for i := pos to n - 1 do
		v[i] := v[i+1];
	n := n - 1;
end;

procedure insere (x: longint; var v: vetor; var n: longint);
var i : integer;
begin
	v[0] := x;		// posiciona o sentinela
	i := n;			// inicia pelo último valor
	while x < v[i] do	// enquanto o valor buscado é menor que o visitado
	begin
		v[i+1] := v[i];	// puxa os valores para a direita
		i := i - 1;
	end;
	
	v[i+1] := x;		// insere na posicao correta e aumenta tamanho do vetor
	n := n + 1;
end;

begin (* programa principal *)
	ler (v, n);
	imprimir (v, n);

	writeln ('Qual o valor a ser inserido no vetor? ');
	read (posicao);

	insere (posicao, v, n);
	imprimir (v, n);
end.
