Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- type point = record
- x, y:real;
- end;
- polygon = record
- n:integer;
- k:longint;
- v:array [0..100] of point;
- area:real;
- end;
- function area(r:polygon):real;
- var i:integer;
- sum:real;
- begin
- sum:=0;
- for i:=1 to r.n - 1 do
- sum:=sum + r.v[i].x * (r.v[i - 1].y - r.v[i + 1].y);
- area:=abs(sum) / 2;
- end;
- var k, maxi:longint;
- i:integer;
- max:real;
- r:polygon;
- e1, e2, e3:boolean;
- f:text;
- begin
- assign(f, 'input.txt');
- reset(f);
- k:=0;
- e3:=false;
- while (not(eof(f))) do
- begin
- e1:=false;
- e2:=false;
- inc(k);
- r.k:=k;
- read(f, r.n);
- for i:=1 to r.n do
- begin
- read(f, r.v[i].x, r.v[i].y);
- if (r.v[i].x = 0)
- then e1:=true;
- if (r.v[i].y = 0)
- then e2:=true;
- end;
- r.v[0].x:=r.v[r.n].x;
- r.v[0].y:=r.v[r.n].y;
- r.area:=area(r);
- if (e1 and e2)
- then
- begin
- if (not(e3))
- then
- begin
- max:=r.area;
- maxi:=r.k;
- e3:=true;
- end
- else
- begin
- if (max > r.area)
- then
- begin
- max:=r.area;
- maxi:=r.k;
- end;
- end;
- end;
- end;
- close(f);
- if (not(e3))
- then writeln(0, ' ', 0.000:0:3)
- else writeln(maxi, ' ', max:0:3);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement