#include <fstream>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <utility>
#include <queue>
using namespace std;
int main() {
vector <vector<bool> > Palos(4, vector <bool> (13,false)); // al principio no tenemos ninguna carta, cuando tengamos una pondremos en su palo y número un true
string s;
vector <int> numPalos (4,13);
int palo;
// las cartas que faltan de cada palo
cin >> s; // el string de entrada
bool error = false; //si error=true significa que tenemos una carta dos veces y tenemos que imprimir "GRESKA"
int x = s.size();
for(int i = 0; (!error) && (i < x/3); i++){ //Pasamos el string de entrada
//mirmamos primero el palo y luego en comprabarcarta el número
int numero = (s[i*3+1]-'0')*10+(s[i*3+2]-'0');
if (s[i*3]=='P') {
palo=0;
} else if (s[i*3]=='K') {
palo=1;
} else if (s[i*3]=='H') {
palo=2;
} else {
palo=3;
}
if(Palos[palo][numero]) {//si ya hemos leido el número antes, ahora lo tenemos repetido-->error=true
error = true;
}
else{
Palos[palo][numero] = true;
//si no lo habíamos leido antes, ahora lo marcamos como leido
numPalos[palo]--;//nos falta una carta menos de ese palo
}
}
if(!error){
cout << numPalos[0] << " " << numPalos[1] << " " << numPalos[2] << " " << numPalos[3];
}
else{
cout << "GRESKA";
}
return 0;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
204 KB |
Output is correct |
2 |
Correct |
1 ms |
216 KB |
Output is correct |
3 |
Correct |
1 ms |
204 KB |
Output is correct |
4 |
Correct |
0 ms |
204 KB |
Output is correct |
5 |
Correct |
0 ms |
204 KB |
Output is correct |
6 |
Correct |
0 ms |
204 KB |
Output is correct |
7 |
Correct |
1 ms |
204 KB |
Output is correct |
8 |
Correct |
0 ms |
204 KB |
Output is correct |
9 |
Correct |
0 ms |
204 KB |
Output is correct |
10 |
Correct |
1 ms |
204 KB |
Output is correct |