问题 B: 小李数星星

问题 B: 小李数星星

时间限制: 1 Sec  内存限制: 128 MB
提交:  解决: 
[提交] [状态] [讨论版] [命题人:外部导入]

题目描述

 小李在农村长大,那时候大家喜欢晚饭过后在院子里纳凉,听不懂大人在说什么的小李喜欢抬头看天空,尤其是夏天的夜晚,天上的星星又多又亮。 

长大后小李进城打工,每当想家的时他还是喜欢抬头看看天,寻找另一边故乡的记忆。 

可是大城市里空气质量太差了,雾霾天气横行,天上能看到的星星也越来越少了。

小李每次用一个正方形去覆盖自己所能看到的星星,随着日子的推移,这个正方形越来越小了,悲伤的小李希望你能告诉他这个正方形的面积。为了让问题变得简单,小李每次只会使用水平放置的正方形来覆盖(不会旋转),具体参照样例解释。 

 

输入

 第一行一个整数n,表示星星的数量。 

接下来共n行,每行2个正整数(a,b),表示该星星到X轴距离为b,到Y轴距离为a,这些 星星只会位于X轴的上方,Y轴的右方。 

输入数据保证存在一个合法的正方形 (面积非零)去覆盖这些星星

 

输出

一个整数,表示能覆盖所有星星的最小正方形的面积。

 

样例输入

<span style="color:#333333">3 
1 1 
2 1 
2 2 
</span>

 

样例输出

<span style="color:#333333">1 </span>

 

提示

  

80%的数据,3<=n<=20, 1<=x<=100, 1<=y<=100
100%的数据,3<=n<=1000, 1<=x<=100000, 1<=y<=100000


这道题的模拟还是很明显的,取极端点作为边长就可以了。不过刚开始我没想清楚。还要比较极端值的大小的,不然会出矩形,不满足正方形的条件


#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<math.h>
using namespace std;


long int n;
double a,b;


int main(void)
{
	double xxmax,xxmin,yymax,yymin;
	while(scanf("%ld", &n)!=EOF)
	{
		scanf("%lf%lf", &a, &b);
		xxmax=xxmin=a;yymax=yymin=b;
	//	memset(x,0,sizeof(x));memset(y,0,sizeof(y));
		for(long int i=2;i<=n;i++)
		{
			scanf("%lf%lf", &a, &b);
			if(xxmin>=a) xxmin=a;
			if(xxmax<=a) xxmax=a;
			if(yymin>=b) yymin=b;
			if(yymax<=b) yymax=b;
			
		}
		double s;
		s=max(xxmax-xxmin,yymax-yymin);
		s=pow(s,2);
		printf("%.0f\n",s);
	}
	
return 0;
}

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值