После нескольких походов и выигранных битв, у орков накопилось некоторое количество трофеев, которые вождь Оргрим Думхаммер должен распределить между воинами. Но хочет он сделать это в соответствии с тем, как они проявили себя в сражениях. Вождь приказал каждому орку принести 5 голов убитых им воинов противников и выложить их перед собой в ряд. Все бойцы выполнили этот приказ и теперь Оргрим должен оценить доблесть каждого. Возможны следующие оценки:
• нулевка (no pair) – все принесенные головы принадлежат воинам различных рас, то есть нет ни одной пары голов одной расы;
• пара (pair) – есть пара принесенных голов, принадлежащих воинам одной расы;
• две пары (two pair) – есть две пары одинаковых голов;
• тройка (set) – есть три головы воинов одной расы;
• фул-хаус (full house) – три головы одной расы, и две другой;
• каре (quads) – четыре головы одной расы;
• покер (poker) – все пять голов принадлежат воинам одной расы.
Оценки перечислены в порядке возрастания значимости и если комбинация голов у орка подходит под определение нескольких оценок, выбирается наиболее значимая.
Помогите вождю написать программу, которая позволит ему оценить всех своих воинов по достоинству.
Входные данные
В первой строке входного файла содержится целое число T (1 ≤ T ≤ 10000) – количество орков, принесших головы. В каждой из последующих T строк записаны через пробел 5 рас, которым принадлежат головы, выставленные соответствующим орком. Название каждой расы состоит не более чем из 7 маленьких латинских букв.
Выходные данные
В выходной файл нужно вывести T строк, в каждой из которых будет оценка комбинации голов соответствующего орка.
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
vector <int> vect;
vector <string> vstr, answer;
int n;
string str;
bool push;
int main()
{
cin >> n;
for (int i = 0; i < n; i++)
{
vect.clear(); vstr.clear();
for (int j = 0; j < 5; j++)
{
push = false;
cin >> str;
for (int h = 0; h < vstr.size(); h++)
if (vstr[h] == str) { push = true; vect[h]++; }
if (!push) { vect.push_back(1); vstr.push_back(str); }
}
sort(vect.begin(), vect.end());
if (vect[vect.size() - 1] == 5) answer.push_back("poker");
else if (vect[vect.size() - 1] == 4) answer.push_back("quads");
else if (vect[vect.size() - 1] == 3 && vect[vect.size() - 2] == 2) answer.push_back("full house");
else if (vect[vect.size() - 1] == 3) answer.push_back("set");
else if (vect[vect.size() - 1] == 2 && vect[vect.size() - 2] == 2)answer.push_back("two pair");
else if (vect[vect.size() - 1] == 2)answer.push_back("pair");
else answer.push_back("no pair");
}
for (int i = 0; i < n; i++) cout << answer[i] << endl;
}
Есть решение которого нет на сайте? Пиши admin@devexe.top