排序 判断下就可以了
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; int const MAXN = 100010; struct S{ int a,b; }s[MAXN]; bool cmp(S x,S y){ if(x.a != y.a) return x.a < y.a; return x.b < y.b; } int main(){ int n; scanf("%d",&n); for(int i = 1;i <= n;i++){ scanf("%d%d",&s[i].a,&s[i].b); } sort(s+1,s+1+n,cmp); bool flag =true; for(int i = 1;i < n;i++){ if(s[i].b > s[i + 1].b){ flag = false; break; } } if(!flag) printf("Happy Alex\n"); else printf("Poor Alex\n"); return 0; }