Solução de Roger Benet, comentário por João Guilherme.
A solução é simples, basta passarmos pela entrada salvando num set as cartas que vimos e guardando o número de cartas de cada naipe num map. Se em algum momento formos inserir alguém no set já foi inserido, devemos imprimir GRESKA, caso constrário devemos imprimir 13 menos o valor do map de cada naipe.
Segue código para melhor entendimento.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <bits/stdc++.h> | |
using namespace std; | |
set <string> s; | |
map <char,int> mp; | |
string str,aux; | |
char bf[4]; | |
bool ck; | |
int main(){ | |
cin >> str; | |
int len = str.size(); | |
for(int i = 0; i < len; i+=3){ | |
bf[0] = str[i]; | |
bf[1] = str[i+1]; | |
bf[2] = str[i+2]; | |
aux = bf; | |
mp[bf[0]]++; | |
if(s.find(aux) != s.end()){ | |
ck = true; | |
break; | |
} | |
s.insert(aux); | |
} | |
if(ck)printf("GRESKA\n"); | |
else printf("%d %d %d %d\n",13-mp['P'],13-mp['K'],13-mp['H'],13-mp['T']); | |
return 0; | |
} |