Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <vector>
- #include <algorithm>
- void readInput(std::vector<std::string>& input) {
- std::string line;
- getline(std::cin, line);
- while (line != "End") {
- input.push_back(line);
- getline(std::cin, line);
- }
- }
- void extractScore(const std::vector<std::string>& input, std::vector<int>& scores) {
- for (std::string player : input) {
- int indOfNameEnd = player.find(' ');
- int score = player[indOfNameEnd + 1] - player[indOfNameEnd + 3];
- scores.push_back(score);
- //std::cout << score << std::endl;
- }
- }
- void extractNames(const std::vector<std::string>& input, std::vector<std::string>& names) {
- names = input;
- for (int i = 0; i < names.size(); ++i) {
- names[i] = names[i].erase(names[i].find(' '), names[i].length());
- }
- }
- void dealWithMultiAttempts(std::vector<std::string>& names, std::vector<int>& scores) {
- int length = names.size()-1;
- for (int i = 0; i < length; ++i) {
- if (names[i] == names[i+1]) {
- names.erase(names.begin()+(i+1));
- scores[i] += scores[i + 1];
- scores.erase(scores.begin() + (i + 1));
- length -= 1;
- i -= 1;
- }
- }
- }
- void printResult(const std::vector<std::string>& names, const std::vector<int>& scores) {
- for (int i = 0; i < scores.size(); ++i) {
- std::cout << names[i] << " " << scores[i] << std::endl;
- }
- }
- int main()
- {
- std::vector<std::string> input;
- std::vector<std::string> names;
- std::vector<int> scores;
- readInput(input);
- std::sort(input.begin(), input.end());
- extractScore(input, scores);
- extractNames(input, names);
- dealWithMultiAttempts(names, scores);
- printResult(names, scores);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement