分发糖果(sweet) 【问题描述】 万圣节来了,John 在给小朋友们在分发糖果。一共有 n 名小朋友,有些小朋友 会带来 ai 颗糖果,而另一些需要 ai 颗糖果,如果现有的糖果数<ai,则这个小朋 友会不高兴的走开。编程计算分发完成后,John 还剩下多少糖果,有多少小朋 友会不高兴。 【输入格式】 第一行为正整数 t(≤10),表示数据组数;每组数据中,第一行为两个正整数 n(≤1000)和 s(≤109),其中 s 表示 John 开始时有的糖果数;接下来 n 行,以一 个+或-开始,空格后是一个正整数 ai(≤109),+表示小朋友会带来 ai 颗糖果, 而-表示小朋友需要 ai 颗糖果。 【输出格式】 对于每组数据,输出两个整数,表示最后剩下的糖果数和不高兴的小朋友数。 【输入样例】 2 5 7 + 5 - 10 - 20 + 40 - 20 5 17 - 16 - 2 - 98 + 100 - 98 【输出样例】 22 1 3 2c++
时间: 2024-04-16 07:26:26 浏览: 82
分发糖果.md
你可以使用一个循环来遍历每组数据。在每组数据中,你可以使用两个变量来分别记录剩下的糖果数和不高兴的小朋友数。对于每个小朋友,根据他们带来或需要的糖果数来更新相应的变量。最后,输出剩下的糖果数和不高兴的小朋友数。
以下是一个可能的实现:
```cpp
#include <iostream>
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
int n, s;
cin >> n >> s;
int remainingCandies = s;
int unhappyChildren = 0;
for (int i = 0; i < n; i++) {
char operation;
int candies;
cin >> operation >> candies;
if (operation == '+') {
remainingCandies += candies;
} else {
if (remainingCandies < candies) {
unhappyChildren++;
} else {
remainingCandies -= candies;
}
}
}
cout << remainingCandies << " " << unhappyChildren << endl;
}
return 0;
}
```
这个程序首先读取数据组数 `t`。然后,在每个循环中,它读取小朋友数量 `n` 和开始时的糖果数 `s`。接下来,它使用一个循环读取每个小朋友的操作和糖果数,并根据情况更新剩下的糖果数和不高兴的小朋友数。最后,它输出剩下的糖果数和不高兴的小朋友数。
希望这个回答能够帮助到你!如有任何疑问,请随时提问。
阅读全文