Advertisement
Guest User

Untitled

a guest
Mar 19th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.29 KB | None | 0 0
  1. type point = record
  2.         x, y:real;
  3.      end;
  4.      
  5.      polygon = record
  6.         n:integer;
  7.         k:longint;
  8.         v:array [0..100] of point;
  9.         area:real;
  10.      end;
  11.  
  12. function area(r:polygon):real;
  13.     var i:integer;
  14.         sum:real;
  15.         begin
  16.             sum:=0;
  17.             for i:=1 to r.n - 1 do
  18.                 sum:=sum + r.v[i].x * (r.v[i - 1].y - r.v[i + 1].y);
  19.             area:=abs(sum) / 2;
  20.         end;
  21.  
  22. var k, maxi:longint;
  23.     i:integer;
  24.     max:real;
  25.     r:polygon;
  26.     e1, e2, e3:boolean;
  27.     f:text;
  28.  
  29. begin
  30.     assign(f, 'input.txt');
  31.     reset(f);
  32.     k:=0;
  33.     e3:=false;
  34.     while (not(eof(f))) do
  35.         begin
  36.             e1:=false;
  37.             e2:=false;
  38.             inc(k);
  39.             r.k:=k;
  40.             read(f, r.n);
  41.             for i:=1 to r.n do
  42.                 begin
  43.                     read(f, r.v[i].x, r.v[i].y);
  44.                     if (r.v[i].x = 0)
  45.                         then e1:=true;
  46.                     if (r.v[i].y = 0)
  47.                         then e2:=true;
  48.                 end;
  49.             r.v[0].x:=r.v[r.n].x;
  50.             r.v[0].y:=r.v[r.n].y;
  51.             r.area:=area(r);
  52.             if (e1 and e2)
  53.                 then
  54.                     begin
  55.                         if (not(e3))
  56.                             then
  57.                                 begin
  58.                                     max:=r.area;
  59.                                     maxi:=r.k;
  60.                                     e3:=true;
  61.                                 end
  62.                             else
  63.                                 begin
  64.                                     if (max > r.area)
  65.                                         then
  66.                                             begin
  67.                                                 max:=r.area;
  68.                                                 maxi:=r.k;
  69.                                             end;
  70.                                 end;
  71.                     end;
  72.         end;
  73.     close(f);
  74.     if (not(e3))
  75.         then writeln(0, ' ', 0.000:0:3)
  76.         else writeln(maxi, ' ', max:0:3);
  77. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement