题目描述
有一台自动售票机,每张票卖 55 元。售票机可以接受 55 元、1010 元、2020元的纸币。接受大面额纸币时,若没有足够的零钱,售票机将拒绝售票并将纸币退还给客户,若有零钱足够,售票机必须出票并且找零。
一开始,售票机里没有任何零钱。
每位客户只买一张票也只会塞一张纸币。按照购票顺序,给定售票机收到的 𝑛n 张纸币的面额。请统计售货机最多能够卖出多少张票。
输入格式
第一行:单个整数 𝑛n
第二行:𝑛n 个整数表示 𝑛n 名客户分别塞入的纸币面额,保证只能是 55、1010、2020 中的一个。
输出格式
单个整数:表示售票机卖出的最多票数。
数据范围
1≤𝑛≤50,0001≤n≤50,000
样例数据
输入:
8
10 5 5 5 10 10 20 20
输出:
6
说明:
由于没有零钱,无法把票卖给第一个人和最后一个人
详见代码:
#include<bits/stdc++.h>
using namespace std;
int n;
int ans=0;
int f=0;
int t=0;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
int x;
cin>>x;
if(x==5)
{
ans++;
f++;
}
else if(x==10)
{
if(f>0)
{
f--;
t++;
ans++;
}
}
else if(x==20)
{
if(t>0&&f>0)
{
t--;
f--;
ans++;
}
else if(t==0&&f>=3)
{
f-=3;
ans++;
}
}
}
cout<<ans<<endl;
return 0;
}