Codeforces Round #260 (Div. 2) A. Laptops

A. Laptops
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

One day Dima and Alex had an argument about the price and quality of laptops. Dima thinks that the more expensive a laptop is, the better it is. Alex disagrees. Alex thinks that there are two laptops, such that the price of the first laptop is less (strictly smaller) than the price of the second laptop but the quality of the first laptop is higher (strictly greater) than the quality of the second laptop.

Please, check the guess of Alex. You are given descriptions of n laptops. Determine whether two described above laptops exist.

Input

The first line contains an integer n (1 ≤ n ≤ 105) — the number of laptops.

Next n lines contain two integers each, ai and bi (1 ≤ ai, bi ≤ n), where ai is the price of the i-th laptop, and bi is the number that represents the quality of the i-th laptop (the larger the number is, the higher is the quality).

All ai are distinct. All bi are distinct.

Output

If Alex is correct, print "Happy Alex", otherwise print "Poor Alex" (without the quotes).

Sample test(s)
input
2
1 2
2 1
output
Happy Alex



题意:就给一个电脑的价钱和对应的性能,如果满足价钱便宜反而电脑的性能很好,则此时就满足了alex;从而打出“Happly Alex”  否则就打出“Poor Alex”

只要对电脑的价钱排一个序,如果满足价钱便宜反而电脑的性能很好,此时就跳出,直接模拟就可以;

代码:


#include<iostream>
#include<fstream>
#include<iomanip>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#include<set>
#include<map>
#include<queue>
#include<stack>
#include<string>
#include<vector>
#include<sstream>
#include<cassert>
using namespace std;
//#define LL __int64

#ifdef __int64
typedef __int64 LL;
#else
typedef long long LL;
#endif

struct node {
    int p;
    int q;
};
node num[100001];

bool cmp(node a,node b) {
    if(a.q==b.q) {
        return a.p<b.p;;
    }
    return a.q>b.q;
}
int main() {
    int n;
    while(~scanf("%d",&n)) {
        for(int i=0; i<n; i++) {
            scanf("%d%d",&num[i].p,&num[i].q);
        }
        sort(num,num+n,cmp);

        bool flag=false;
        for(int i=0; i<n; i++) {
            if(num[i].p<num[i+1].p&&num[i].q>num[i+1].q) {
                flag=true;
                break;
            }
        }
        if(flag) {

            printf("Happy Alex\n");
        } else {
            printf("Poor Alex\n");
        }
    }

    return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值