Description
n个人手拿5元,n个人手拿10元,他们去排队买东西,东西价值5元,老板没有零钱(老板必须用收取的5元钞票给支付10元的顾客找零钱),现给出一种排列方式,判断是否合理?
Format
Input
第一行一个正整数n表示人数。
第二行一个长度为2n的序列分别表示当前人手里拿的钱。
Output
如果该序列合理,输出“YES”,否则输出“NO”。
Samples
Sample Input 1
3
5 10 5 5 10 10
Sample Output 1
YES
Sample Input 2
4
5 5 10 10 10 5 5 10
Sample Output 2
NO
Limitation
对于100%的数据,保证n<=10000。
思路
水题一道,只需要判断输入等于10的时候栈里有没有5就可以了
#include<bits/stdc++.h>
using namespace std;stack<int> q;
int main(){int n,cmp;cin>>n;for (int i=0;i<2*n;i++){cin>>cmp;if (cmp==5)q.push(cmp);else {if (q.empty()==1){cout<<"NO";return 0; }else {q.pop();}}}cout<<"YES";return 0;
}