POJ 2694. A Simple Poker Game
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <vector> #include <string> #include <queue> #include <stack> #define INT_INF 0x3fffffff #define LL_INF 0x3fffffffffffffff #define EPS 1e-12 #define MOD 1000000007 #define PI 3.141592653579798 #define N 300 using namespace std; typedef long long LL; typedef unsigned long long ULL; typedef double DB; struct data { char s[2]; } card[6]; bool cmp(data a,data b) { if(a.s[1]==b.s[1]) return a.s[0]<b.s[0]; else return a.s[1]<b.s[1]; } int cal() { int fg1=1 , fg2=1; for(int i=1;i<=4;i++) if(card[i].s[0]!=card[i+1].s[0]) { fg1=0; break; } for(int i=1;i<=4;i++) if(card[i].s[1]!=card[i+1].s[1]-1) { fg2=0; break; } if(card[1].s[1]==1 && card[2].s[1]==10 && card[3].s[1]==11 && card[4].s[1]==12 && card[5].s[1]==13) fg2=1; if(fg1 && fg2) return 1000; if(card[1].s[1]!=card[2].s[1] && card[2].s[1]==card[3].s[1] && card[3].s[1]==card[4].s[1] && card[4].s[1]==card[5].s[1]) return 750; if(card[1].s[1]==card[2].s[1] && card[2].s[1]==card[3].s[1] && card[3].s[1]==card[4].s[1] && card[4].s[1]!=card[5].s[1]) return 750; if(card[1].s[1]==card[2].s[1] && card[2].s[1]!=card[3].s[1] && card[3].s[1]==card[4].s[1] && card[4].s[1]==card[5].s[1]) return 500; if(card[1].s[1]==card[2].s[1] && card[2].s[1]==card[3].s[1] && card[3].s[1]!=card[4].s[1] && card[4].s[1]==card[5].s[1]) return 500; if(fg1) return 350; if(fg2) return 250; if(card[1].s[1]!=card[2].s[1] && card[2].s[1]!=card[3].s[1] && card[3].s[1]==card[4].s[1] && card[4].s[1]==card[5].s[1]) return 200; if(card[1].s[1]==card[2].s[1] && card[2].s[1]==card[3].s[1] && card[3].s[1]!=card[4].s[1] && card[4].s[1]!=card[5].s[1]) return 200; if(card[1].s[1]!=card[2].s[1] && card[2].s[1]==card[3].s[1] && card[3].s[1]!=card[4].s[1] && card[4].s[1]==card[5].s[1]) return 100; if(card[1].s[1]==card[2].s[1] && card[2].s[1]!=card[3].s[1] && card[3].s[1]!=card[4].s[1] && card[4].s[1]==card[5].s[1]) return 100; if(card[1].s[1]==card[2].s[1] && card[2].s[1]!=card[3].s[1] && card[3].s[1]==card[4].s[1] && card[4].s[1]!=card[5].s[1]) return 100; if(card[1].s[1]==card[2].s[1] && card[2].s[1]!=card[3].s[1] && card[3].s[1]!=card[4].s[1] && card[4].s[1]!=card[5].s[1]) return 50; if(card[1].s[1]!=card[2].s[1] && card[2].s[1]==card[3].s[1] && card[3].s[1]!=card[4].s[1] && card[4].s[1]!=card[5].s[1]) return 50; if(card[1].s[1]!=card[2].s[1] && card[2].s[1]!=card[3].s[1] && card[3].s[1]==card[4].s[1] && card[4].s[1]!=card[5].s[1]) return 50; if(card[1].s[1]!=card[2].s[1] && card[2].s[1]!=card[3].s[1] && card[3].s[1]!=card[4].s[1] && card[4].s[1]==card[5].s[1]) return 50; return 0; } int main() { int n; scanf("%d",&n); for(int ca=1;ca<=n;ca++) { for(int i=1;i<=5;i++) { scanf("%s",&card[i].s); if(card[i].s[1]>='0' && card[i].s[1]<='9') card[i].s[1]=card[i].s[1]-'0'; if(card[i].s[1]=='A') card[i].s[1]=1; if(card[i].s[1]=='X') card[i].s[1]=10; if(card[i].s[1]=='J') card[i].s[1]=11; if(card[i].s[1]=='Q') card[i].s[1]=12; if(card[i].s[1]=='K') card[i].s[1]=13; } sort(card+1,card+1+5,cmp); printf("%d\n",cal()); } return 0; }