Informatika gyűjtemény

Egy szinttel feljebb pt_lapok.pas

2004050607080910

NézetNyomtat

pt_lapok.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: us-ascii
Méret: 2 KB
program lapok;

const maxN  = 100;

type  TNegyzet =  record
                    x1,y1,x2,y2:integer;
                  end;
      TNegyzetek  = array[1..maxN] of TNegyzet;
      TMezo       = record
                      data:integer;
                      id:byte;
                      c:byte;
                      newdat:byte;
                    end;
      TTomb       = array[1..2*maxN] of TMezo;
      TBrutal     = array[1..2*maxN,1..2*maxN] of byte;
    
      
var N:byte;
    t:TNegyzetek;
    b:TBrutal;
    MAX:byte;
    
    
procedure load;
var i:byte;
begin
  readln(N);
  for i:=1 to N do
    readln(t[i].x1,t[i].y1,t[i].x2,t[i].y2);   
end;

procedure swap(var u:TTomb;i,j:byte);
var tmp:TMezo;
begin
  tmp:=u[i];
  u[i]:=u[j];
  u[j]:=tmp;
end;

procedure rendez(var u:TTomb;K:byte);
var i,j,min:byte;
begin
  for i:=1 to K-1 do
    begin
      min:=i;
      for j:=i+1 to K do
        if u[j].data<u[min].data then min:=j;
      swap(u,i,min);
    end;
end;


procedure tomorit(var u:TTomb;K:byte);
var i,j:byte;
begin
  rendez(u,K);
  
  u[1].newdat:=1;
  j:=1;
  
  for i:=2 to K do
    begin
      if u[i].data > u[i-1].data then inc(j);
      u[i].newdat:=j;
    end; 
end;

procedure xtomorit;
var u:TTomb;
    i:byte;
begin
  for i:=1 to N do
    begin
      u[2*i-1].data:=t[i].x1;
      u[2*i-1].id:=i;
      u[2*i-1].c:=1;
      
      u[2*i].data:=t[i].x2;
      u[2*i].id:=i;
      u[2*i].c:=2;      
    end;
  
  tomorit(u,2*N);
  
  for i:=1 to 2*do
    begin
      if (u[i].c=1) then t[ u[i].id ].x1:=u[i].newdat else t[u[i].id].x2:=u[i].newdat;
    end;
end;

procedure ytomorit;
var u:TTomb;
    i:byte;
begin
  for i:=1 to N do
    begin
      u[2*i-1].data:=t[i].y1;
      u[2*i-1].id:=i;
      u[2*i-1].c:=1;
      
      u[2*i].data:=t[i].y2;
      u[2*i].id:=i;
      u[2*i].c:=2;      
    end;
  
  tomorit(u,2*N);
  
  for i:=1 to 2*do
    begin
      if (u[i].c=1) then t[u[i].id].y1:=u[i].newdat else t[u[i].id].y2:=u[i].newdat;
    end;
end;

procedure brutal;
var i,j,c,mx,my:byte;
begin
  for i:=1 to N do
    for j:=1 to N do
      b[i,j]:=0;
  
  for c:=1 to N do
    begin
      for i:=t[c].x1 to t[c].x2 do
        for j:=t[c].y1 to t[c].y2 do
          inc(b[i,j]);
    end;
    
  mx:=1; my:=1;
  for i:=1 to N do
    for j:=1 to N do
      if b[i,j]>b[mx,my] then
        begin
          mx:=i;
          my:=j;
        end;
  MAX:=b[mx,my];
end;

procedure print;
begin
  writeln(MAX);
end;

procedure dump;
var i:byte;
begin
  for i:=1 to N do writeln(t[i].x1,' ',t[i].y1,' ',t[i].x2,' ',t[i].y2);
end;

begin
  load;
  xtomorit;
  ytomorit;
  brutal;
  
  print;
end.of.program.file
(Vissza)