比赛 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;
}