#include using namespace std; bool eval(int n, vector &cards, vector &cols, int &v, int numrule, int lastrule) { if(n==1) { if(cards.size()>=4) { v++; int numj=0; for(auto c : cards) { if(c==11) numj++; } v+=min(10,cards[0])*numj; return 1; } return 0; } if(n==2) { vector seen(4,0); for(auto c : cols) { if(seen[c]) { v*=2; return v!=0; } seen[c]=1; } return 0; } if(n==3) { vector seen(4,0); for(auto c : cols) { seen[c]=1; } for(auto s : seen) { if(!s) return 0; } v*=2; return v!=0; } if(n==4) { int nb = 0, nr=0; for(auto c : cols) { if(c<2) nr++; else nb++; } if(nb==nr) return 0; v+=abs(nb-nr); return 1; } if(n==5) { if(v%2) return 0; int toadd=0; for(int i=1; i*i<=v; i++) { if(v%i == 0) { toadd += v/i+i; } if(i*i==v) toadd-=i; } v+=toadd; return 1; } if(n==6) { int sevens=0; for(auto c: cards) { if(c==7) sevens++; } if(sevens==4) { v-=11*11; return 1; } return 0; } if(n==7) { if(v>=0) { int m=20; for(auto c: cards) { if(c=3) { v+=1; for(auto &c: cols) { if(c==6) c=9; else if(c==9) c==6; else if(c==2) c==5; else if(c==5) c==2; } return 1; } return 0; } if(n==10) { vector p(20,0); for(auto c: cards) { p[c]=1; } int last=p[0]; for(int i = 1; i=5) { int numa=0; for(auto c: cards) { if(c==14) numa++; } if(numa) { v+=numa*5; return 1; } return 0; } } return 0; } if(n==11) { if(numrule>8) { int vv = v, r=0; while(vv) { if(vv%2) { v++; r=1; } vv/=2; } return r; } return 0; } if(n==12) { for(auto c:cards) { if(c==2) { eval(lastrule, cards, cols, v, numrule, lastrule); return 1; } } return 0; } if(n==13) { for(auto c:cards) { if(c==2) { v+=v; return 1; } } return 0; } } int main() { string s; vector cards(5); vector cols(5); int v=0; for(int i=0; i<5; i++) { cin >> s; if(s.back()=='D') { cols[i]=0; } if(s.back()=='H') { cols[i]=1; } if(s.back()=='C') { cols[i]=2; } if(s.back()=='S') { cols[i]=3; } if(s[0]<='9' && s[0]>='2') { cards[i]=s[0] - '0'; } if(s[0]=='1') { cards[i]=10; } if(s[0]=='J') { cards[i]=11; } if(s[0]=='Q') { cards[i]=12; } if(s[0]=='K') { cards[i]=13; } if(s[0]=='A') { cards[i]=14; } v += min(cards[i],10); } /* for(auto c:cards) { cout << c << " "; } cout << endl; for(auto c:cols) { cout << c << " "; } cout << endl; */ int numrule=0, lastrule=0, ret=0; for(int i = 1; i<14; i++) { ret = eval(i, cards, cols, v, numrule, lastrule); if(ret) { numrule++; lastrule=i; } } cout << v; cout << endl; }