uses crt;

{Program bude fungovat pouze pro cisla od -1000 po +1000.}
const MAX = 1000;
      MIN = -MAX;

{definice promennych}
var n: integer; {pocet cisel}
    i: integer; {citac cyklu}
    x: real;    {ctene cislo}
    max1,       {nejvetsi nactene cislo}
    max2,       {druhe nejvetsi nactene cislo}
    min1,       {nejmensi nactene cislo}
    min2: real; {druhe nejmensi nactene cislo}
    sum: real;  {soucet VSECH nactenych cisel}


begin
  {nacteni n - pocet cisel, z nichz chceme pocitat orezany prumer}
  write('Zadej pocet cisel (minimalne 5): ');
  readln(n);
  if (n < 5) then
    writeln('Cisel bylo mene nez 5...')

  {uzivatel spravne zadal n - muzeme zacit}
  else begin
    {zatim bylo precteno 0 cisel}
    i := 0;

    {fiktivni hodnoty maxim a minim - vsechna nactena cisla budou mezi MIN
     a MAX, tudiz po aspon ctyrech ctenich budou min1, min2, max1 a max2
     nahrazeny skutecnymi hodnotami maxim a minim}
    max1 := MIN - 1;
    max2 := MIN - 1;
    min1 := MAX + 1;
    min2 := MAX + 1;

    {Pocitame soucet vsech nactenych cisel - dokud jsme nic nenacetli,
     je roven nule.}
    sum := 0;
    {Budeme cist prave n-krat.}
    while (i < n) do begin
      {Citac cteni i zvysime o 1 a precteme i-te cislo.}
      i := i + 1;
      write ('Zadej ', i, '. cislo: ');
      readln(x);

      {K souctu vsech nactenych cisel pricteme prave nactenou hodnotu.}
      sum := sum + x;

      {Uprava zapamatovanych maxim a minim.}
      if (x > max1) then begin
        max2 := max1;
        max1 := x;
      end else if (x > max2) then
        max2 := x;
      if (x < min1) then begin
        min2 := min1;
        min1 := x;
      end else if (x < min2) then
        min2 := x;
    end;

    {Vypis vysledku - prumer spocitany z celkove sumy,
     ale bez ctyr krajnich hodnot.}
    writeln('Orazany prumer je ', (sum - min1 - min2 - max1 - max2) / (n - 4));
  end;
  readkey;
end.