A. Laptops

来源:互联网 发布:淘宝联盟靠谱吗 编辑:程序博客网 时间:2024/06/05 00:33

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
21 22 1
output
Happy Alex

解题说明:题目的意思是找到一个逆序对,该逆序对中的第一个元素价格低于第二个,但是质量好于第二个。做法是针对价格从小到大进行排序,然后再判断质量是否一致,如果不一致,则存在这样的逆序对。

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<limits.h>using namespace std;const int maxn=1e5+10;struct node{    int x,y;}e[maxn];int cmp(node l1,node l2){    return l1.x<l2.x;}int main(){    int n;    while(~scanf("%d",&n))    {        for(int i=0;i<n;i++)            scanf("%d%d",&e[i].x,&e[i].y);        sort(e,e+n,cmp);        int flag=0;        for(int i=1;i<n;i++)        {            if(e[i].x>e[i-1].x&&e[i].y<e[i-1].y)            {                flag=1;                break;            }        }        if(flag)            cout<<"Happy Alex"<<endl;        else            cout<<"Poor Alex"<<endl;    }    return 0;}


0 0
原创粉丝点击