Codeforces 1013C Photo of The Sky

Codeforces 1013C Photo of The Sky

本文为转载,原文地址:https://blog.csdn.net/yanzhenhuai/article/details/81301718

描述

Pavel made a photo of his favourite stars in the sky. His camera takes a photo of all points of the sky that belong to some rectangle with sides parallel to the coordinate axes.

Strictly speaking, it makes a photo of all points with coordinates (x,y), such that x1≤x≤x2 and y1≤y≤y2, where (x1,y1) and (x2,y2) are coordinates of the left bottom and the right top corners of the rectangle being photographed. The area of this rectangle can be zero.

After taking the photo, Pavel wrote down coordinates of n of his favourite stars which appeared in the photo. These points are not necessarily distinct, there can be multiple stars in the same point of the sky.

Pavel has lost his camera recently and wants to buy a similar one. Specifically, he wants to know the dimensions of the photo he took earlier. Unfortunately, the photo is also lost. His notes are also of not much help; numbers are written in random order all over his notepad, so it’s impossible to tell which numbers specify coordinates of which points.

Pavel asked you to help him to determine what are the possible dimensions of the photo according to his notes. As there are multiple possible answers, find the dimensions with the minimal possible area of the rectangle.

Input

The first line of the input contains an only integer n (1≤n≤100000), the number of points in Pavel’s records.

The second line contains 2⋅n integers a1, a2, …, a2⋅n (1≤ai≤109), coordinates, written by Pavel in some order.

Output

Print the only integer, the minimal area of the rectangle which could have contained all points from Pavel’s records.

Examples

Input1

4
4 1 3 2 3 2 1 3

Output1

1

Input2

3
5 8 5 5 7 5

Output2

0

Note

In the first sample stars in Pavel’s records can be (1,3), (1,3), (2,3), (2,4). In this case, the minimal area of the rectangle, which contains all these points is 1 (rectangle with corners at (1,3) and (2,4)).

简单说一下题意:

给你2n2n个数,任意组合得到nn个坐标点,求最小矩形面积能够框住这nn个点。

当时做的时候直接跪了…毫无思路…最后看了题解才懂

我们先将这2n2n个数排序得到a1,a2…a2na1,a2…a2n,然后考虑一下问题的转化:我们应该如何计算矩形的面积?

因为矩形是要求把这nn个点框住的,所以稍微想一下不难得到:S=(max(x)−min(x))∗(max(y)−min(y))S=(max(x)−min(x))∗(max(y)−min(y))

于是我们将原问题这样转化:
给你2n2n个数,把这2n2n个数放在两个集合当中,每个集合的元素个数为nn,设这两个集合分别为X,YX,Y,
求min((Xmax−Xmin)∗(Ymax−Ymin))min((Xmax−Xmin)∗(Ymax−Ymin))

接下来我们来讨论,如何分放集合。
考虑如果最大数a2na2n与最小数a1a1如果在同一个集合XX,那么现在我们要求min(Ymax−Ymin)min(Ymax−Ymin)。

考虑一下怎样的情况才会有min(Ymax−Ymin)min(Ymax−Ymin)的情况出现。假设YminYmin在aa中为aiai,那么YmaxYmax在aa中一定为ai+n−1ai+n−1,为什么呢?

如果YmaxYmax在ai+1−>ai+n−2ai+1−>ai+n−2之间,那么YY集合里面的元素个数就没有要求的nn个了,不满足。
如果YmaxYmax在ai+n−>a2n−1ai+n−>a2n−1之间,那么显然可以在满足元素个数为nn的情况下使YmaxYmax最小。

所以在最大数a2na2n与最小数a1a1如果在同一个集合XX时,答案的值为:
Ans=min(a[2n]−a[1])∗(a[i+n−1]−a[i]) 2≤i≤n
Ans=min(a[2n]−a[1])∗(a[i+n−1]−a[i]) 2≤i≤n

那么还有一种情况就是最大数a2na2n与最小数a1a1不在同一个集合当中,与上面类似的讨论不难得到最后的结果唯一:
Ans=(a[2n]−a[n+1])∗(a[n]−a[1])
Ans=(a[2n]−a[n+1])∗(a[n]−a[1])

所以我们最后的结果在上面两者之间取最小即可。

参考代码:

int main() {
	LL I, J, K;
	N = Read();
	for (I = 1; I <= 2 * N; I++) {
		A[I] = Read();
	}
	sort(A + 1, A + 1 + 2 * N);
	if (N == 1) {
		puts("0"); return 0;
	}
	Ans = (A[N] - A[1])*(A[2 * N] - A[N + 1]);
	for (I = 2; I <= N; I++) {
		Ans = min(Ans, (A[2 * N] - A[1])*(A[I + N - 1] - A[I]));
	}
	Write(Ans);
	return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值