1 条题解
-
2
#include<bits/stdc++.h> using namespace std; short n; struct Img{ // img(IMaGe) short x,y; double bi; // 要想精确地对比宽高比,就要用浮点型 int s; // 因为X*y最大值为1e8,所以要用int }img[102]; // 分号不要少
首先定义好一个足够大的结构体数组。
bool cmp(Img a,Img b){ if(fabs(a.bi-img[0].bi)!=fabs(b.bi-img[0].bi)){ return fabs(a.bi-img[0].bi)<fabs(b.bi-img[0].bi); }else{ return a.s<b.s; } }
然后要按照题目要求写好cmp函数。
int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin>>img[0].x>>img[0].y; // 先计算原数据的 img[0].bi=double(img[0].x)/img[0].y; // 宽高比 和 img[0].s=img[0].x*img[0].y; // 面积 cin>>n; for(short i=1;i<=n;i++){ // 依次输入并计算 cin>>img[i].x>>img[i].y; img[i].bi=double(img[i].x)/img[i].y; img[i].s=img[i].x*img[i].y; } sort(img+1,img+n+1,cmp); // 按照题目要求用cmp函数排序 cout<<img[1].x<<" "<<img[1].y<<"\n"; // 排序完的数组第一项即为最终答案 return 0; }
- 1
信息
- ID
- 343
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 4
- 标签
- 递交数
- 58
- 已通过
- 29
- 上传者