#include #include #define LL long long using namespace std; struct kar { char s; char v; }; LL val = 0; LL last = 0; vector kars; LL getval(char v) { switch (v) { case '1': case 'J': case 'Q': case 'K': case 'A': return 10; default: return (int) v - (int) '0'; } } LL numSuite(char s) { LL i = 0; for (auto&&k : kars) { if (k.s == s) ++i; } return i; } LL numRank(char v) { LL i = 0; for (auto&&k : kars) { if (k.v == v) ++i; } return i; } void print() { for (auto&&k : kars) { cout << k.v << " " << k.s << endl; } } void rule1() { val += 1; val += numRank('J') * getval(kars[0].v); last = 1; } void rule2() { if (numSuite('D') >= 2 || numSuite('H') >= 2 || numSuite('C') >= 2 || numSuite('S') >= 2) { val *= 2; last = 2; } } void rule3() { if (numSuite('D') >= 1 && numSuite('H') >= 1 && numSuite('C') >= 1 && numSuite('S') >= 1) { val *= 2; last = 3; } } void rule4() { LL b = numSuite('C') + numSuite('S'); LL r = numSuite('H') + numSuite('D'); if (b != r) { val += (b > r) ? b - r : r - b; last = 4; } } void rule5() { if (val % 2 == 1) return; LL inc = 0; for (LL i = 1; i <= val; ++i) { if (val % i == 0) inc += i; } val += inc; last = 5; } void rule6() { if (numRank('7') == 4) { val -= 11*11; last = 6; } } void rule7() { if (val < 0) return; LL low = 10; for (auto&&k : kars) low = min(getval(k.v), low); val += low; last = 7; } void rule8() { if (val >= 0) return; val *= -1; last = 8; } void rule9() { if (numSuite('D') >= 3) val++; last = 9; for(auto&&k : kars) { switch (k.v) { case '6': k.v = '9'; break; case '9': k.v = '6'; break; case '2': k.v = '5'; break; case '5': k.v = '2'; break; default: break; } } } void rule10() { if (numRank('1') == 1 && numRank('J') == 1 && numRank('Q') == 1 && numRank('K') == 1 && numRank('A') == 1) { val += 5; last = 10; } } void rule11() { //DNE } void rule12() { if (numRank('2') >= 1) { switch(last) { case 1: rule1(); break; case 2: rule2();break; case 3: rule3(); break; case 4: rule4();break; case 5: rule5(); break; case 6: rule6();break; case 7: rule7(); break; case 8: rule8();break; case 9: rule9(); break; case 10: rule10();break; } } } void rule13() { if (numRank('2') >= 1) val *= 2; } int main() { kars.resize(5); for (int i = 0; i < 5; ++i) { cin >> kars[i].v; // 10 if (kars[i].v == '1') { char a; cin >> a; } cin >> kars[i].s; val += getval(kars[i].v); cin.get(); } rule1(); rule2(); rule3(); rule4(); rule5(); rule6(); rule7(); rule8(); rule9(); rule10(); rule11(); rule12(); rule13(); cout << val << endl; return 0; }