酷代码 AI
菜单
服务商

题目描述 在 XCPC 竞赛里,会有若干道题目,一支队伍可以对每道题目提交若干次。我们称一支队伍对一道题目的一次提交是有效的,当且仅当: 在本次提交以前,还未通过该题目。 本次提交的题目在比赛里最终被该队伍通过了。 显然,一支队伍一道题目的所有有效提交有且仅有最后一次是通过,其它提交都是未通过。 一支队伍对于一道题目的罚时定义是:第一次通过该题时的分钟数加上二十倍的该题的未通过有效提交次数。 例如,如果一支队伍共提交一道题四次,则它们前三次提交是未通过的;假设第四次提交在第 91 分钟,则该该题目的罚时是:91+3×20=151。 一支队伍一场比赛的总罚时是所有题目的罚时之和。 例如,如果一支队伍在比赛**通过两道题目,第一道题目的罚时为 151,第二道题目的罚时为 35,则该队伍的总罚时是 151+35=186。 给定一支队伍的所有有效提交记录,每条记录是一个二元组 (ai​,bi​),其中 ai​ 是本次提交的时间,bi​ 表示本次提交是否通过:bi​=0 表示未通过,bi​=1 表示通过。求该队伍本场比赛的罚时。 提示:虽然队伍的罚时是通过每道题目的罚时定义的,

```cpp #include <iostream> using namespace std; int main() { int n; cin >> n; int penalty = 0; int wrong_count = 0; for (int i = 0; i < n; i++) { int time, result; cin >> time >> result; if (result == 0) { wrong_count++; } else { penalty += time + wrong_count * 20; wrong_count = 0; } } cout << penalty << endl; return 0; } ``` 代码解释 1. 输入处理:首先读取有效提交记录的条数`n`。 2. 初始化变量:`penalty`用于存储总罚时,初始化为 0;`wrong_count`用于记录每道题未通过的有效提交次数,初始化为 0。 3. 遍历提交记录:在循环中,每次读取一条提交记录,包含提交时间`time`和提交结果`result`。 - 若`result`为 0,表示未通过,`wrong_count`加 1。 - 若`result`为 1,表示通过,将当前题目的罚时(第一次通过时间加上 20 倍的未通过有效提交次数)累加到总罚时`penalty`中,并将`wrong_count`重置为 0。 4. 输出结果:最后输出总罚时`penalty`。 [2025-11-10 20:02:54 | AI问答 | 342点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多