记录编号 185801 评测结果 AAAAAAAAAA
题目名称 拱猪计分 最终得分 100
用户昵称 Gravatar1azyReaper 是否通过 通过
代码语言 C++ 运行时间 0.008 s
提交时间 2015-09-09 10:25:40 内存使用 0.28 MiB
显示代码纯文本
    #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;
    }