1 条题解

  • 2
    @ 2022-8-6 21:17:11
    #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
    难度
    3
    标签
    递交数
    34
    已通过
    22
    上传者