Our new contest submission system keeps a chronological log of all submissions made by each team during the contest. With each entry, it records the number of minutes into the competition at which the submission was received, the letter that identifies the relevant contest problem, and the result of testing the submission (designated for the sake of this problem simply as right or wrong). As an example, the following is a hypothetical log for a particular team:
3 E right 10 A wrong 30 C wrong 50 B wrong 100 A wrong 200 A right 250 C wrong 300 D right
The rank of a team relative to others is determined by a primary and secondary scoring measure calculated from the submission data. The primary measure is the number of problems that were solved. The secondary measure is based on a combination of time and penalties. Specifically, a team’s time score is equal to the sum of those submission times that resulted in right answers, plus a 20-minute penalty for each wrong submission of a problem that is ultimately solved. If no problems are solved, the time measure is 0.
In the above example, we see that this team successfully completed three problems: E on their first attempt (C, but were never successful in solving those problems, and thus received no penalties for those attempts.
According to contest rules, after a team solves a particular problem, any further submissions of the same problem are ignored (and thus omitted from the log). Because times are discretized to whole minutes, there may be more than one submission showing the same number of minutes. In particular there could be more than one submission of the same problem in the same minute, but they are chronological, so only the last entry could possibly be correct. As a second example, consider the following submission log:
7 H right 15 B wrong 30 E wrong 35 E right 80 B wrong 80 B right 100 D wrong 100 C wrong 300 C right 300 D wrong
This team solved 4 problems, and their total time score (including penalties) is C.
Input
The input contains −1.
Output
Output two integers on a single line: the number of problems solved and the total time measure (including penalties).
| Sample Input 1 | Sample Output 1 |
|---|---|
3 E right 10 A wrong 30 C wrong 50 B wrong 100 A wrong 200 A right 250 C wrong 300 D right -1 |
3 543 |
| Sample Input 2 | Sample Output 2 |
|---|---|
7 H right 15 B wrong 30 E wrong 35 E right 80 B wrong 80 B right 100 D wrong 100 C wrong 300 C right 300 D wrong -1 |
4 502 |
题意
每道题错一次加20的罚时,如果这道题没做对的话就不算,求做对的题数和总时间
思路
用一个数组记录题目出现的次数,然后遍历的时候如果结果是“right”的话,就加上(所用的时间+出现的次数-1*20);
#include<bits/stdc++.h> using namespace std; struct Node { int score; char ch; string answer; } aa[101]; int main() { int x; char c; string ss; int t = 0; for(int i = 0; i < 101; i++) { aa[i].score = 0; } int bb[100] = {0}; while(cin >> x) { if(x != -1) { cin >> c; cin >> ss; bb[c]++; if(ss == "right") aa[c].score += x; aa[c].ch = c; aa[c].answer = ss; t++; } else break; } int cnt = 0, sum = 0; for(int i = 65; i <= 91; i++) { if(aa[i].answer == "right") { cnt++; sum += aa[i].score + (bb[i] - 1) * 20; } } printf("%d %d\n", cnt, sum); return 0; }