Матч
302, Игра с мячом (XBallGame)
Дивизион 2, Уровень
2
Имеется список имен игроков и
позиции, на которых они могут играть. Имя игрока в списке встречается столько
раз, на скольких позициях он может играть. Фаны хотят переделать этот список в
новый формат. Новый формат содержит столько же строк, сколько и старый. Порядок
следования игроков в новом формате остался прежним. Каждая строка нового
формата содержит имя игрока, дефис и список его позиций, разделенный точкой с
запятой. Первая позиция в списке должна быть такой же, как и в старом формате,
все остальные позиции должны быть отсортированы в алфавитном порядке.
Класс: XBallGame
Метод: vector<string>
newStatistics(vector<string> placeboard)
Ограничения:
placeboard содержит от 1 до 50 элементов, каждый элемент placeboard[i] содержит от 4 до 23 символов в формате
“имя-позиция”. Позицией является строка из двух символов ‘A’-‘Z’. Именем
является строка, содержащая от 1 до 20 символов ‘a’ – ‘z’, ‘A’-‘Z’.
Вход. Массив, содержащий список игроков в формате “имя-позиция”.
Выход. Массив, содержащий список игроков в новом формате.
Пример входа
placeboard |
{"John-DH", "Jack-SP", "Sam-OF", "John-SP", "John-RP"} |
{"John-DH", "Jack-SP", "Sam-OF", "John-SP", "John-RP", "John-RA", "John-RZ", "Jack-OF",
"Sam-SP"} |
Пример выхода
{"John-DH,RP,SP", "Jack-SP",
"Sam-OF", "John-SP,DH,RP", "John-RP,DH,SP"}
{"John-DH,RA,RP,RZ,SP", "Jack-SP,OF",
"Sam-OF,SP", "John-SP,DH,RA,RP,RZ",
"John-RP,DH,RA,RZ,SP",
"John-RA,DH,RP,RZ,SP", "John-RZ,DH,RA,RP,SP",
"Jack-OF,SP", "Sam-SP,OF"}
РЕШЕНИЕ
обработка строк
Для каждого имени игрока
перебираем весь список и ищем позиции, на которых он может играть. Полученный
список позиций заносим в массив pos и сортируем в алфавитном порядке. Формируем
строку – информацию об игроке согласно требуемым правилам.
ПРОГРАММА
#include <cstdio>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
class XBallGame
{
public:
vector<string> newStatistics(vector<string> placeboard)
{
string player, player1;
int i, j;
vector<string> res(placeboard.size());
for(i = 0; i < placeboard.size();
i++)
{
int size = placeboard[i].size();
player = placeboard[i].substr(0,size - 3);
vector<string> pos;
for(j = 0; j < placeboard.size();
j++)
{
if (j ==
i) continue;
player1 = placeboard[j].substr(0,placeboard[j].size() - 3);
if (player1 == player)
pos.push_back(placeboard[j].substr(placeboard[j].size() -
2));
}
sort(pos.begin(),pos.end());
res[i] = placeboard[i];
for(j = 0; j < pos.size(); j++)
res[i] = res[i] + ',' + pos[j];
}
return res;
}
};