记录编号 |
79563 |
评测结果 |
AAAAAAAAAA |
题目名称 |
拱猪计分 |
最终得分 |
100 |
用户昵称 |
digital-T |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.029 s |
提交时间 |
2013-11-05 22:00:57 |
内存使用 |
0.32 MiB |
显示代码纯文本
#include<fstream>
#include<cstring>
using namespace std;
ifstream fi("heart.in");
ofstream fo("heart.out");
int Heart[14]={0,-50,-2,-3,-4,-5,-6,-7,-8,-9,-10,-20,-30,-40};
int num[5],H[14],Cdouble,SQ,DJ;//加倍、猪、羊 各在哪家
int counting[5];
void Print()
{
for(int tmp=1;tmp<=4;tmp++)
if(counting[tmp]>0)
fo<<'+'<<counting[tmp]<<' ';
else
fo<<counting[tmp]<<' ';
fo<<endl;
}
void work()
{
bool flag=true;
for(int i=2;i<=13;i++)
if(H[1]!=H[i])flag=false;
if(H[1]==0)flag=false;
if(flag)
{
counting[H[1]]+=200;
if(SQ==H[1]&&DJ==H[1])//猪羊都在强王手里
{
counting[H[1]]+=300;
if(Cdouble==H[1])//魔法士16张凑齐了有木有
counting[Cdouble]*=2;
else//只有Cdouble在别人手上
counting[Cdouble]+=50;
Print();
return;
}
else
{
counting[SQ]-=100;
counting[DJ]+=100;
if(Cdouble==H[1]||Cdouble==SQ||Cdouble==DJ)//加倍
counting[Cdouble]*=2;
else//不加倍
counting[Cdouble]+=50;
Print();
return;
}
}
else
{
bool double_it=false;//是否加倍
for(int i=1;i<=13;i++)//计算红心
{
if(Cdouble==H[i])double_it=true;
counting[H[i]]+=Heart[i];
}
if(Cdouble==SQ||Cdouble==DJ)
double_it=true;
counting[SQ]-=100;//猪
counting[DJ]+=100;//羊
if(double_it)counting[Cdouble]*=2;//加倍
else counting[Cdouble]+=50;//不加倍
Print();
return;
}
}
int main()
{
char ch;
int temp;
while(1)
{
memset(H,0,sizeof(H));
memset(counting,0,sizeof(counting));
Cdouble=0,SQ=0,DJ=0;
for(int tmp=1;tmp<=4;tmp++)
{
fi>>num[tmp];
for(int i=1;i<=num[tmp];i++)
{
fi>>ch;
fi>>temp;
switch(ch)
{
case 'C':
Cdouble=tmp;
break;
case 'S':
SQ=tmp;
break;
case 'D':
DJ=tmp;
break;
case 'H':
H[temp]=tmp;
break;
default:
break;
}
}
}
if(num[1]==0&&num[2]==0&&num[3]==0&&num[4]==0)return 0;
work();
}
return 0;
}