#B8. 阿强卖柠檬水

阿强卖柠檬水

题目描述

阿强在夏日集市上摆摊卖柠檬水,每杯售价 5 元。顾客们排成一条长队,依次购买柠檬水。每位顾客只会买一杯,并且会支付一张面额为 5 元、10 元或 20 元的钞票。

阿强刚开始时没有任何零钱。他必须给每位顾客找零,使得每位顾客实际支付的净金额为 5 元。例如:

  • 如果顾客支付 5 元,无需找零。
  • 如果顾客支付 10 元,阿强需要找回一张 5 元。
  • 如果顾客支付 20 元,阿强需要找回 15 元。这可以通过一张 10 元和一张 5 元,或者三张 5 元来实现。

阿强希望知道,按照当前顾客的排队顺序和支付金额,他是否能成功给每一位顾客正确找零?如果能,输出 "YES";否则,一旦遇到无法找零的顾客,立即停止并输出 "NO"。

注意:阿强应该优先使用大面额钞票找零吗?对于 20 元的找零,优先使用 10+5 的组合通常比 5+5+5 更优,因为 5 元钞票在找零 10 元时是必须的,而 10 元钞票只能用于找零 20 元。这是一种贪心策略。

输入格式

第一行包含一个整数 NN,表示顾客的数量。 第二行包含 NN 个整数,每个整数只能是 5、10 或 20,按顺序表示每位顾客支付的钞票面额。

数据范围:

  • 1≤N≤1051 \le N \le 10^5
  • 账单金额仅限 {5,10,20}\{5, 10, 20\}

输出格式

输出一个字符串。如果阿强能给所有顾客正确找零,输出 "YES";否则输出 "NO"。

5
5 5 10 10 20
NO