比赛 |
20150714B |
评测结果 |
AAAAAAAAAA |
题目名称 |
拱猪计分 |
最终得分 |
100 |
用户昵称 |
1azyReaper |
运行时间 |
0.006 s |
代码语言 |
C++ |
内存使用 |
0.32 MiB |
提交时间 |
2015-07-14 09:06:00 |
显示代码纯文本
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("heart.in");
ofstream fout("heart.out");
class node
{
public:
int total,score;
bool S,D,C,H[14];
int pre()
{
total=0;
S=false;
D=false;
C=false;
for(int i=0;i<=13;i++)
H[i]=false;
return 0;
}
}p[5];
bool red(int x)
{
for(int i=1;i<=13;i++)
{
if(!p[x].H[i])
return false;
}
return true;
}
int getred(int x)
{
int s=0;
if (p[x].H[1]) s-=50;
if (p[x].H[2]) s-=2;
if (p[x].H[3]) s-=3;
if (p[x].H[4]) s-=4;
if (p[x].H[5]) s-=5;
if (p[x].H[6]) s-=6;
if (p[x].H[7]) s-=7;
if (p[x].H[8]) s-=8;
if (p[x].H[9]) s-=9;
if (p[x].H[10]) s-=10;
if (p[x].H[11]) s-=20;
if (p[x].H[12]) s-=30;
if (p[x].H[13]) s-=40;
return s;
}
int compute(int x)
{
if (p[x].total==0)
{
fout<<0;
return 0;
}
if (p[x].total==1 && p[x].C)
{ fout<<"+50";
return 0;
}
if (p[x].total==13 && red(x))
{
fout<<"+200";
return 0;
}
if (red(x))
{
int s=200;
if (p[x].S && p[x].D)
s=500;
if (p[x].S && !p[x].D)
s-=100;
if (!p[x].S && p[x].D)
s+=100;
if (p[x].C)
s*=2;
fout<<"+"<<s;
return 0;
}
if (!red(x))
{
int s=getred(x);
if (p[x].S && !p[x].D)
s-=100;
if (!p[x].S && p[x].D)
s+=100;
if (p[x].C)
s*=2;
if (s>0)
fout<<"+"<<s;
if (s==0)
fout<<0;
if (s<0)
fout<<s;
}
return 0;
}
int bw()
{
int num[5],pai;
char C;
while(!fin.eof())
{
for(int i=1;i<=4;i++)
{
p[i].pre();
fin>>num[i];
for(int j=1;j<=num[i];j++)
{
fin>>C>>pai;
if (C=='H')
{
p[i].H[pai]=true;
p[i].total++;
continue;
}
if (C=='S' && pai==12)
{
p[i].S=true;
p[i].total++;
continue;
}
if (C=='D' && pai==11)
{
p[i].D=true;
p[i].total++;
continue;
}
if (C=='C' && pai==10)
{
p[i].C=true;
p[i].total++;
continue;
}
}
}
if(num[1]==0&&num[2]==0&&num[3]==0&&num[4]==0)
return 0;
for(int i=1;i<=4;i++)
{
compute(i);
if (i<4) fout<<" ";
if (i==4) fout<<endl;
}
}
return 0;
}
int main()
{
bw();
return 0;
}