Advertisement
Guest User

Untitled

a guest
May 20th, 2018
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. var
  2. f : text;
  3. x, y, px, py, x1, y1, i, n : integer;
  4. s, p, a, b, c, str, per, maxiS, miniS, maxiP : real;
  5. cnt, ansN : longint;
  6.  
  7. begin
  8. assign(f, 'input.txt');
  9. reset(f);
  10.  
  11. miniS := 10000000000000000000000000000000000000007.0;
  12. maxiS := -1;
  13. cnt := 0;
  14.  
  15. while not eof(f) do begin
  16. inc(cnt);
  17. read(f, n);
  18. read(f, x); read(f, y);
  19. read(f, x1); read(f, y1);
  20.  
  21. s := 0.0;
  22. per := sqrt(sqr(x - x1) + sqr(y - y1));
  23. str := sqrt(sqr(x - x1) + sqr(y - y1));
  24.  
  25. for i := 3 to n do begin
  26. px := x1; py := y1;
  27.  
  28. read(f, x1); read(f, y1);
  29.  
  30. a := sqrt(sqr(x1 - x) + sqr(y1 - y));
  31. b := sqrt(sqr(x1 - px) + sqr(y1 - py));
  32. c := sqrt(sqr(px - x) + sqr(py - y));
  33. p := (a + b + c) / 2;
  34.  
  35. s := s + sqrt(p *(p - a) * (p - b) * (p - c));
  36. per := per + b;
  37.  
  38. if (str - b) >= 0.001 then str := b;
  39. end;
  40.  
  41. b := sqrt(sqr(x - x1) + sqr(y - y1));
  42. if (str - b) >= 0.001 then str := b;
  43. per := per + b;
  44.  
  45. if miniS - str >= 0.001 then begin miniS := str; maxiS := s; ansN := cnt; maxiP := per; end
  46. else if (abs(str - miniS) < 0.001) AND ((s - maxiS) >= 0.001) then begin maxiS := s; ansN := cnt; maxiP := per; end;
  47.  
  48. readln(f);
  49. end;
  50.  
  51. close(f);
  52.  
  53. writeln(ansN, ' ', maxiS : 0 : 3, ' ', maxiP : 0 : 3);
  54. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement