Решение задачи "Победитель" с Codeforces

Без пояснения   Просмотров: 12


Победитель популярной в Берляндии карточной игры «Берлоггинг» определяется по следующим правилам. Если на момент окончания игры существует только один игрок, набравший максимальное количество очков, то он и становится победителем.

Ситуация осложняется, если таких игроков несколько. Каждый кон игры некоторый игрок выигрывает или проигрывает некоторое количество очков. В записи о ходе игры это обозначается строкой «name score», где name это имя игрока, а score целое число обозначающее количество заработанных очков данным игроком. Если score — отрицательное число, это обозначает, что игрок проиграл в этом коне. Так вот, если на конец игры несколько игроков набрали максимум очков (пусть это число равно m), то выигрывает тот из них, кто первым набрал как минимум m очков. Перед началом игры у каждого игрока 0 очков. Гарантируется, что на момент окончания игры хотя бы у одного игрока положительное число очков.

Код

#include<bits/stdc++.h>
using namespace std;

string s[1001];
int m, n, o[1001];
map <string, int> p, t;

int main(){
    cin >> n;
    for (int i = 0; i < n; i++){
        cin >> s[i] >> o[i];
        p[s[i]] += o[i];
    }
    for (int i = 0; i < n; i++){
        m = max(m, p[s[i]]);
    }
    int i;
    for (i = 0; p[s[i]] < m || (t[s[i]] += o[i]) < m; i++);
    cout << s[i];
}

         

 Администратор Photo Автор: Администратор


Отправить решение задачи
Чтобы отправить решение вам нужно войти в систему или зарегистрироваться

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться