记录编号 |
79551 |
评测结果 |
AAAAAAAAAA |
题目名称 |
拱猪计分 |
最终得分 |
100 |
用户昵称 |
cstdio |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.003 s |
提交时间 |
2013-11-05 21:43:49 |
内存使用 |
0.31 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int redheart[]={0,-50,-2,-3,-4,-5,-6,-7,-8,-9,-10,-20,-30,-40};
bool allred;
class PLAYER{
public:
int cardnum;
bool pig,goat,twice;
int rdnum;
bool rd[14];
int score;
void clear(){
pig=goat=twice=false;
cardnum=rdnum=0;
memset(rd,0,sizeof(rd));
}
void input(void){
string str;
scanf("%d",&cardnum);
int i;
for(i=1;i<=cardnum;i++){
cin>>str;
if(str=="S12") pig=true;
else if(str=="D11") goat=true;
else if(str=="C10") twice=true;
else if(str[0]=='H'){//红桃
rdnum++;
if(str.size()==2) rd[str[1]-'0']=true;
else if(str.size()==3) rd[(str[1]-'0')*10+(str[2]-'0')]=true;
}
}
}
void calc(void){
if(twice&&(cardnum==1)){
score=50;
return;
}
int sum=0,i;
if(!allred){//红牌不在同一家
//红牌以负分计算
for(i=1;i<=13;i++) if(rd[i]) sum+=redheart[i];
if(pig) sum-=100;//S12以-100计算
if(goat) sum+=100;//D11以+100计算
}
else{//红牌在同一家
if(rdnum==13){//红心通吃者
sum=200;
if(pig&&goat) sum=500;
else{
if(pig) sum-=100;
if(goat) sum+=100;
}
}
else{
if(pig) sum-=100;
if(goat) sum+=100;
}
}
if(twice) sum*=2;
score=sum;
}
void output(void){
if(score>0) printf("+");
printf("%d",score);
}
};
PLAYER a,b,c,d;
bool check_allred(void){
if(a.rdnum==13) return true;
if(b.rdnum==13) return true;
if(c.rdnum==13) return true;
if(d.rdnum==13) return true;
return false;
}
bool legal(void){
if(a.cardnum) return true;
if(b.cardnum) return true;
if(c.cardnum) return true;
if(d.cardnum) return true;
return false;
}
bool singlework(void){
a.clear(),b.clear(),c.clear(),d.clear();
a.input(),b.input(),c.input(),d.input();
if(!legal()) return false;
allred=check_allred();
a.calc(),b.calc(),c.calc(),d.calc();
a.output();cout<<" ";b.output();cout<<" ";c.output();cout<<" ";d.output();cout<<"\n";
return true;
}
int main(){
freopen("heart.in","r",stdin);
freopen("heart.out","w",stdout);
while(singlework());
return 0;
}