这题怎么写?

学军电影院

时间:1s 空间:256M

题目描述:

[image]

学军电影院暑期档大片“学军熊猫”正在热映,票价25元,现在有很多oier即将来买票,oier都是极简主义者,因此每个人手里只有一张纸币,纸币的面值是100,50,25当中的一种,学军中学已经实现了自动售票,电影院门口放了一台自动售票机,但不巧的是,今天自动售票机里面没有零钱了,现在问你,已知n个oier所带的纸币的信息,以及他们到来的顺序,自动售票机能否在没有钱的情况下完成找钱功能。

(假设纸币投入机器后,会在下一个买票人之前,由工作人员换为对应数量的1元零钱。例如第一个人将1张25元的纸币投入机器后,在第二个人买票时,机器里是25个1元的零钱)

输入格式:

多组测试数据。

每组测试数据先输入一个n,表示买票的总人数,接下来一行输入n个正整数。表示每个人手里的纸币面值。

输出格式:

对于每组测试数据

输出”YES”,如果可以完成找钱功能

输出”NO”,如果不能完成找钱功能。

样例输入:

4 25 25 50 50 2 25 100 4 50 50 25 25

样例输出:

YES NO NO

约定:

1<=n<=105

提示:

第一组数据:先来了两个人手里都有25元钱,都不用找,现在机器里面一共有了两张25,接下来两个人手里都有一张50,每个人分别找回去25。找钱成功。

第二组数据:第一个人来,不用找钱,第二个人来,要找75,发现零钱不够了,所以找钱失败。

第三组数据:第一个人给50,机器里面一开始没有钱,没法找零,所以找钱失败。

#include<bits/stdc++.h>
using namespace std;

int main(){
	int n;
	while(cin>>n && n != NULL){//输入人数 
		int sum=0,a;
		bool h = true;
		for(int i = 0; i<n; i++){
			cin>>a;//输入每个人手里的纸币面值 
			if(a-25>sum){//判断身上的钱能不能还够钱 
				h = false;
				break;
			}else{
				sum -= a-25;//还钱 
				sum += a;//将别人的钱放进sum内储存 
				//sum += 25; 
			}
		}
		if(h){
			cout<<"YES"<<endl;
		}else{
			cout<<"NO"<<endl;
		}
	} 
}

WA 50

私信