题目描述
一天,贫穷的小王决定通过卖柠檬水来赚取零花钱,于是他摆了个柠檬水摊,柠檬水定价一杯五元,每十分钟会来一位客人,来买的客人只会支付五元,十元,二十元面值的现金(随机),由于贫穷,小王一开始手里没有现金,每位客人等待找钱时间超过五分钟就会不高兴,现在小王想知道能否让每位客人都开心买到柠檬水。
输入
第一行一个n表示客人的数量
第二行n个数,表示每个客人支付的金额
输出
如果能让每个人都开心,输出Happy,否则输出 Unhappy
思路:直接模拟,每来一个顾客更新一下手里的五元和十元钞票的张数即可。
代码:
#include<iostream>
using namespace std;
int main()
{
int f=1,n,five=0,ten=0;
cin >> n;
for(int i=0;i<n;i++)
{
int k;
cin >> k;
if(k==5) five++;
else if(k==10)
{
if(!five){
f=0;
break;
}
else{
five--;
ten++;
}
}
else
{
if(ten&&five)
{
ten--;
five--;
}
else if(five<3){
f=0;
break;
}
else if(five>=3)
five-=3;
}
}
if(f==0) cout << "Unhappy" << endl ;
else cout << "Happy" << endl ;
return 0;
}