cf500-3,不能很好的理解

 1 //Codeforces Round #500 (Div. 2) [based on EJOI]C. Photo of The Sky 
 2 //解决用一个最小矩形,把所给的不定点围起来
 3 //点的横纵坐标都是不确定的,尽量让这些点的横坐标连着最近,纵坐标连着最近,这是决策
 4 //但这类题记住, 首先把所有数升排序,然后,用最大和最小值  最为最左边和最右边的横坐标
 5 // 之后再筛选一个最小的高度 
 6 #include<bits/stdc++.h>
 7 #define ll long long 
 8 using namespace std;
 9 const int maxn=1e6+10;
10 ll a[maxn];
11 int main(){
12     int n;
13     ll res;
14     cin>>n;
15     for(int i=0;i<2*n;i++){
16         scanf("%lld",&a[i]);
17     }
18     sort(a,a+2*n);
19 
20     res=(a[2*n-1]-a[n])*(a[n-1]-a[0]); //暂时给值 
21     for(int i=1;i<n;i++){
22         res=min(res, (a[2*n-1]-a[0])*(a[n-1+i]-a[i]) ); //已经横向最长了,寻找纵向最短长度
23     }
24     cout<<res<<endl;
25 }

 

posted @ 2018-07-31 16:38  3532  阅读(119)  评论(0编辑  收藏  举报