有一群人在排队,如果某个人想排到前面去,可以花一元钱给直接站在他前面的人,然后和这个人交换位置。如果自己没有钱了,就不能和前面的人交换。
但是呢,队列里面的人觉得排他前面的所有人一定要比较有钱的,至少不能比他自己拿的少。否则里面就会有人生气。站在队头的人一定是高兴的。
现在给出一个队列的初始状态,问能不能调整队列,使得里面的人都高兴。
样例解释:样例1中,队尾的人可以和前面的人交换,变成9 10。
Input
单组测试数据。 第一行包含一个整数n (1 ≤ n ≤ 200,000),表示队列中的人数。 第二行包含n个空格分开的整数 ai (0 ≤ ai ≤ 10^9),ai表示队列中第i个人手上拿的钱。编号从队尾开始。
Output
对于每一组数据如果能够使得所有人高兴输出Happy,否则输出Sad。
Input示例
2 11 8 2 9 8
Output示例
Happy Sad
#include<bits/stdc++.h>
using namespace std;
const int MAXN=200200;
int a[MAXN];
int main()
{
int n, i;
while (~scanf("%d", &n))
{
for (i = 0; i < n; i++)
{
scanf("%d", &a[i]);
a[i] += i;
}
sort(a, a + n);
bool ok = true;
for (i = 1; i < n; i++)
{
if (a[i] == a[i-1])
{
ok = false;
break;
}
}
if (!ok)
{
printf("Sad\n");
}
else
{
printf("Happy\n");
}
}
}