1230:寻找平面上的极大点

【算法分析】

1、先按y从大到小排序,y相同按x从大到小排序
2、排序之后相当于从二维变一维(y不需要管了,因为排序了可以降维度来控制),用cur来更新当前x的最大值。

【代码】

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int INF = 0x3f3f3f3f;
const int N = 110;
struct node{
    int x;
    int y;
}a[N];
bool cmp(node c, node d){
    if(c.y!=d.y) return c.y > d.y;
    else return c.x >d.x;
}
int main(){
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>a[i].x>>a[i].y;
    }
    sort(a,a+n,cmp);//排序
    int cur = - INF;
    int flag1 = 0;
    for(int i=0;i<n;i++)
    {
        if(a[i].x > cur){
        
        cur = a[i].x;
        if(flag1++) cout<<",";//逗号分隔符判断
        cout<<"("<<a[i].x<<","<<a[i].y<<")";
      }
    }
    return 0;
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值