题意是说,程序设计竞赛举办越来越频繁了,这给出题者带来了不小的压力,如果出题者能提供相应数量的题目,那么就可以举办比赛,否则就只能取消比赛了。有一点要注意,当月出的题,只能在下个月之后才能使用。
现给定题库中剩余的题目数量S(0<=S<=100,如果输入的S为-1,表示输入结束),以及一年12个月中,每个月出题者能提供的新题目的数量c,还有每个月程序设计竞赛所需的题目的数量r(其中,0<=c, r <=20)。如果能举办竞赛,则输出"No problem! :D",表示没问题,如果不能举办,则输出"No problem. :(",表示没题目。
程序很简单,直接按月模拟即可,先判断题库s与竞赛所需题目的数量r,决定是否可以举办比赛,然后再补充题目数量c到题库s即可。
python版本AC代码
testcase = 0
while True:
testcase += 1
S = int(input())
if S < 0:
break
Problem_created = list(map(int,input().split()))
Problem_required= list(map(int,input().split()))
print("Case {}:".format(testcase))
for i in range(12):
if S >= Problem_required[i]:
print("No problem! :D")
S -= Problem_required[i]
else:
print("No problem. :(")
S += Problem_created[i]
C++版本AC代码
#include <iostream>
#include<cstdio>
using namespace std;
//#define ZANGFONG
const int maxn = 13;
int S[maxn],P[maxn];
int main()
{
#ifdef ZANGFONG
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
#endif // ZANGFONG
int N,i;
int cnt = 1;
while(scanf("%d\n",&N)&&N >= 0)
{
printf("Case %d:\n",cnt++);
for(i = 1; i < maxn; i++) scanf("%d",&S[i]);
for(i = 1; i < maxn; i++) scanf("%d",&P[i]);
for(i = 1; i < maxn; i++)
{
if(N >= P[i])
{
printf("No problem! :D\n");
N -= P[i];
}
else printf("No problem. :(\n");
N += S[i];
}
}
return 0;
}