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.
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.
If Alex is correct, print "Happy Alex", otherwise print "Poor Alex" (without the quotes).
2 1 2 2 1
Happy Alex
有N台电脑,看是否存在价格低但质量更高的一对。坑爹的是我理解为全部都要价格更低质量更高,其实只要有1对是这样就行。
对价格升序排序,如果有个质量比前面的(价格低的)高,就是Happy Alex了
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct node{
int a;
int b;
}s[100002];
int cmp(const void *c,const void *d)
{
return ((struct node *)c)->a-((struct node *)d)->a;
}
int main()
{
int i,n,flag;
// freopen("in.txt","r",stdin);
while(scanf("%d",&n)==1)
{
flag = 0;
for(i=0;i<n;i++)
{
scanf("%d%d",&s[i].a,&s[i].b);
}
qsort(s,n,sizeof(s[0]),cmp);
for(i=0;i<n-1;i++)
{
if(s[i].b > s[i+1].b){
flag = 1;
break;
}
}
if( flag == 1)
printf("Happy Alex\n");
else
printf("Poor Alex\n");
}
return 0;
}