[关闭]
@994495jj 2017-08-21T12:01:58.000000Z 字数 862 阅读 783

cfgym100792G

201708


  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define fi first
  4. #define se second
  5. #define pb push_back
  6. #define sz(a) (int)a.size()
  7. #define mp make_pair
  8. #define rep(i, a, b) for(int i=(a); i<(b); i++)
  9. #define de(a) cout<<#a<<"="<<a<<endl;
  10. typedef long long ll;
  11. typedef double db;
  12. typedef pair<int, int> pii;
  13. typedef vector<int> vi;
  14. //--------
  15. const int N=200005;
  16. const db eps=1e-5;
  17. const db s21=sqrt(2)-1;
  18. int n;
  19. int x[N],y[N];
  20. int sign(db x) {
  21. return (x>eps)-(x<-eps);
  22. }
  23. db calc(int sta,int o) {
  24. db _x=x[o],_y=y[o];
  25. if(sta&1) _y*=s21;
  26. else _x*=s21;
  27. if(sta&(1<<1)) _x=-_x;
  28. if(sta&(1<<2)) _y=-_y;
  29. return _x+_y;
  30. }
  31. bool Max(int sta,int o,int _) {
  32. return sign(calc(sta,o)-calc(sta,_))>0;
  33. }
  34. int main() {
  35. scanf("%d",&n);
  36. rep(i,1,n+1) scanf("%d%d",x+i,y+i);
  37. int a=1,b=1;db ans=0;
  38. rep(i,0,(1<<3)) {
  39. int mi=1,ma=1;
  40. rep(j,2,n+1) {
  41. if(Max(i,j,ma)) ma=j;
  42. if(Max(i,mi,j)) mi=j;
  43. }
  44. db t=calc(i,ma)-calc(i,mi);
  45. if(sign(t-ans)>0) {
  46. a=mi;
  47. b=ma;
  48. ans=t;
  49. }
  50. }
  51. printf("%d %d\n",a,b);
  52. return 0;
  53. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注