链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
题目描述
这天,托米家的电影院门口排起了长队--因为最新的电影"托米历险记"就要上映了!
每个人都有且仅有一张面值为25或50或100元的钞票.一张电影票的价格是25元.
托米想知道售票员能否在初始金钱为0并且按排队顺序售票的情况下完成找零.
输入描述:
第一行一个数字n,表示排队的人的数量. 第二行n个数字,第i个数字为ai,表示队伍中第i个人所持有的钞票的面值.
输出描述:
如果售票员能完成找零,输出"YES"(不含引号). 反之输出"NO".
示例1
输入
复制4 25 25 50 50
4 25 25 50 50
输出
复制YES
YES
示例2
输入
复制4 50 50 25 25
4 50 50 25 25
输出
复制NO
NO
备注:
1≤n≤105
关键是设置几个变量表示25 50 100出现的个数,如果等于50,那就要保证25出现了至少一次
如果等于100,那就要保证25至少出现了三次,或者50至少出现了一次,25至少出现了两次
#include<stdio.h>
int main()
{
long n;
scanf("%ld",&n);
int a[10000000];
int num1=0;//25
int num2=0;//50
int num3=0;//100
int i=1;
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
if(a[0]!=25)
{
printf("NO");
}
else
{
for(i=1;i<n;i++)
{
if(a[i]==25)
{
num1++;
}
else if(a[i]==50 && num1>=1)
{
num2++;
num1--;
}
else if((a[i]==100&&num2>=1&&num1>=1))
{
num3++;
num2--;
num1--;
}
else if(a[i]==100&&num2==0&&num1>=3)
{
num3++;
num1=num1-3;
}
else{
break;
}
}
if(i==n)
{
printf("YES");
}
else{
printf("NO");
}
}
}