fork(10) download
  1. {
  2.  Author:wzx961008
  3.  Problem:HNOI 2011-rectangle
  4.  Verdict:Accepted
  5.  Language:PASCAL
  6.  Run Time:4.53s
  7.  AC Date:17.07.11
  8. }
  9. uses math;
  10. const maxn=1500+1;
  11. type pair=record
  12. pn1,pn2:longint;
  13. end;
  14. episode=record
  15. x,y,r:int64;
  16. pr:pair;
  17. end;
  18. point=record
  19. x,y:int64;
  20. end;
  21. var eps:array[1..maxn*maxn]of episode;
  22. p:array[1..maxn]of point;
  23. n,epsnum:longint;
  24. procedure qsort(l,r:longint);
  25. var i,j:longint;
  26. x,t1:episode;
  27. begin
  28. i:=l; j:=r; x:=eps[l+random(r-l-1)+1];
  29. repeat
  30. while (eps[i].x<x.x)or((eps[i].x=x.x)and(eps[i].y<x.y))or((eps[i].x=x.x)and(eps[i].y=x.y)and(eps[i].r<x.r)) do inc(i);
  31. while (eps[j].x>x.x)or((eps[j].x=x.x)and(eps[j].y>x.y))or((eps[j].x=x.x)and(eps[j].y=x.y)and(eps[j].r>x.r)) do dec(j);
  32. if i<=j then begin
  33. t1:=eps[i]; eps[i]:=eps[j]; eps[j]:=t1;
  34. inc(i); dec(j);
  35. end;
  36. until i>j;
  37. if l<j then qsort(l,j);
  38. if i<r then qsort(i,r);
  39. end;
  40. procedure init;
  41. var i,j:longint;
  42. begin
  43. readln(n);
  44. for i:=1 to n do begin
  45. readln(p[i].x,p[i].y);
  46. for j:=1 to i-1 do begin
  47. inc(epsnum);
  48. eps[epsnum].x:=p[i].x+p[j].x;
  49. eps[epsnum].y:=p[i].y+p[j].y;
  50. eps[epsnum].r:=sqr(p[i].x-p[j].x)+sqr(p[i].y-p[j].y);
  51. eps[epsnum].pr.pn1:=i; eps[epsnum].pr.pn2:=j;
  52. end;
  53. end;
  54. randomize;
  55. qsort(1,epsnum);
  56. end;
  57. function euclid(p1,p2:point):extended;
  58. begin
  59. exit(sqrt(sqr(p1.x-p2.x)+sqr(p1.y-p2.y)));
  60. end;
  61. procedure main;
  62. var i,j:longint;
  63. ans:int64;
  64. begin
  65. ans:=0;
  66. for i:=1 to epsnum do
  67. for j:=i-1 downto 1 do
  68. if (eps[i].x=eps[j].x)and(eps[i].y=eps[j].y)and(eps[i].r=eps[j].r) then begin
  69. ans:=max(ans,round(euclid(p[eps[i].pr.pn1],p[eps[j].pr.pn1])*euclid(p[eps[i].pr.pn2],p[eps[j].pr.pn1])));
  70. end else break;
  71. writeln(ans);
  72. end;
  73. begin
  74. init;
  75. main;
  76. end.
stdin
8
-2 3
-2 -1
0 3
0 -1
1 -1
2 1
-3 1
-2 1
compilation info
Free Pascal Compiler version 2.2.0 [2009/11/16] for i386
Copyright (c) 1993-2007 by Florian Klaempfl
Target OS: Linux for i386
Compiling prog.pas
prog.pas(27,5) Note: Local variable "t2" not used
Linking prog
76 lines compiled, 0.1 sec
1 note(s) issued
stdout
10