Informatika gyűjtemény

Egy szinttel feljebb pt_szul.pas

2004050607080910

NézetNyomtat

pt_szul.pas (Vissza)
Az alábbi letöltési lehetőségek közül választhatsz: (segítség)
Karakterkódolás:
Sortörés:
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: utf-8
Méret: 1 KB
program szul;
const maxN = 30001;
      INF = 32000;
type  TTomb = array[0..maxN-1]of integer;
var N:integer;
    T:TTomb;
    S:TTomb;
    
procedure load;
var i:integer;
begin
  readln(n);
  for i:=0 to N-1 do read(t[i]);
  for i:=0 to N-1 do t[i]:=t[i]-1;
  for i:=0 to N-1 do s[i]:=t[N-1-i];
end;    

function tav(a,b:integer):integer;
var d:integer;
begin
  d:=b-a;
  if d<0 then d:=-d;        //d>0
  if N<2*then d:=N-d;     //d a kisebb ív
  tav:=d;  
end;

function kaosz(t:TTomb;k:integer):integer;
var max,i:integer;
begin
  max:=tav(0,(t[0]+k)mod N);
  for i:=1 to N-1 do
    if tav(i,(t[i]+k)mod N)>max then max:=tav(i,(t[i]+k)mod N);
  kaosz:=max;
end;

function minof(x,y:integer):integer;
begin
  if x<=then minof:=else minof:=y; 
end;

procedure negyzetes;
var min:integer;
    k,x:integer;
begin
  min:=INF;
  for k:=0 to N-1 do
    begin
      x:=minof(kaosz(t,k),kaosz(s,k));
      if min>then min:=x;
    end;
  writeln(min);
end;

{procedure dump;
var k,i:integer;
begin
  for k:=0 to 0 do
    begin
      write(k,':');
      for i:=0 to N-1 do
        write(tav(i,(t[i]+k)mod N):3);
      writeln;
    end;
end;}

begin
  load;
  negyzetes;
//  dump;
end.of.program
(Vissza)