因为用的STL,所以函数不会写了
#include <bits/stdc++.h>
using namespace std;
int main()
{
map <string, int> ds;
ds["S12"] = -100;
ds["D11"] = 100;
ds["H1"] = -50;
ds["H2"] = -2;
ds["H3"] = -3;
ds["H4"] = -4;
ds["H5"] = -5;
ds["H6"] = -6;
ds["H7"] = -7;
ds["H8"] = -8;
ds["H9"] = -9;
ds["H10"] = -10;
ds["H11"] = -20;
ds["H12"] = -30;
ds["H13"] = -40;
int a, b, c, d = 1;
while (a | b | c | d)
{
set <string> A;
set <string> B;
set <string> C;
set <string> D;
string str;
cin >> a;
for (int i = 0; i < a; i++)
cin >> str, A.insert(str);
cin >> b;
for (int i = 0; i < b; i++)
cin >> str, B.insert(str);
cin >> c;
for (int i = 0; i < c; i++)
cin >> str, C.insert(str);
cin >> d;
for (int i = 0; i < d; i++)
cin >> str, D.insert(str);
int ans_a, ans_b, ans_c, ans_d;
if (A.size() == 1 && A.find("C10") != A.end())
ans_a = 50;
else
{
if (A.find("S12") != A.end() && A.find("D11") != A.end() && A.find("H1") != A.end() && A.find("H2") != A.end() && A.find("H3") != A.end() && A.find("H4") != A.end() && A.find("H5") != A.end() && A.find("H6") != A.end() && A.find("H7") != A.end() && A.find("H8") != A.end() && A.find("H9") != A.end() && A.find("H10") != A.end() && A.find("H11") != A.end() && A.find("H12") != A.end() && A.find("H13") != A.end())
ans_a = 500;
else if (A.find("H1") != A.end() && A.find("H2") != A.end() && A.find("H3") != A.end() && A.find("H4") != A.end() && A.find("H5") != A.end() && A.find("H6") != A.end() && A.find("H7") != A.end() && A.find("H8") != A.end() && A.find("H9") != A.end() && A.find("H10") != A.end() && A.find("H11") != A.end() && A.find("H12") != A.end() && A.find("H13") != A.end())
{
ans_a = 200;
if (A.find("S12") != A.end())
ans_a -= 100;
if (A.find("D11") != A.end())
ans_a += 100;
}
else
{
set <string> :: iterator it_a;
ans_a = 0;
for (it_a = A.begin(); it_a != A.end(); it_a++)
ans_a += ds[*it_a];
}
if (A.find("C10") != A.end())
ans_a *= 2;
}
if (ans_a > 0)
cout << "+";
if (a | b | c | d)
cout << ans_a << " ";
if (B.size() == 1 && B.find("C10") != B.end())
ans_b = 50;
else
{
if (B.find("S12") != B.end() && B.find("D11") != B.end() && B.find("H1") != B.end() && B.find("H2") != B.end() && B.find("H3") != B.end() && B.find("H4") != B.end() && B.find("H5") != B.end() && B.find("H6") != B.end() && B.find("H7") != B.end() && B.find("H8") != B.end() && B.find("H9") != B.end() && B.find("H10") != B.end() && B.find("H11") != B.end() && B.find("H12") != B.end() && B.find("H13") != B.end())
ans_b = 500;
else if (B.find("H1") != B.end() && B.find("H2") != B.end() && B.find("H3") != B.end() && B.find("H4") != B.end() && B.find("H5") != B.end() && B.find("H6") != B.end() && B.find("H7") != B.end() && B.find("H8") != B.end() && B.find("H9") != B.end() && B.find("H10") != B.end() && B.find("H11") != B.end() && B.find("H12") != B.end() && B.find("H13") != B.end())
{
ans_b = 200;
if (B.find("S12") != B.end())
ans_b -= 100;
if (B.find("D11") != B.end())
ans_b += 100;
}
else
{
set <string> :: iterator it_b;
ans_b = 0;
for (it_b = B.begin(); it_b != B.end(); it_b++)
ans_b += ds[*it_b];
}
if (B.find("C10") != B.end())
ans_b *= 2;
}
if (ans_b > 0)
cout << "+";
if (a | b | c | d)
cout << ans_b << " ";
if (C.size() == 1 && C.find("C10") != C.end())
ans_c = 50;
else
{
if (C.find("S12") != C.end() && C.find("D11") != C.end() && C.find("H1") != C.end() && C.find("H2") != C.end() && C.find("H3") != C.end() && C.find("H4") != C.end() && C.find("H5") != C.end() && C.find("H6") != C.end() && C.find("H7") != C.end() && C.find("H8") != C.end() && C.find("H9") != C.end() && C.find("H10") != C.end() && C.find("H11") != C.end() && C.find("H12") != C.end() && C.find("H13") != C.end())
ans_c = 500;
else if (C.find("H1") != C.end() && C.find("H2") != C.end() && C.find("H3") != C.end() && C.find("H4") != C.end() && C.find("H5") != C.end() && C.find("H6") != C.end() && C.find("H7") != C.end() && C.find("H8") != C.end() && C.find("H9") != C.end() && C.find("H10") != C.end() && C.find("H11") != C.end() && C.find("H12") != C.end() && C.find("H13") != C.end())
{
ans_c = 200;
if (C.find("S12") != C.end())
ans_c -= 100;
if (C.find("D11") != C.end())
ans_c += 100;
}
else
{
set <string> :: iterator it_c;
ans_c = 0;
for (it_c = C.begin(); it_c != C.end(); it_c++)
ans_c += ds[*it_c];
}
if (C.find("C10") != C.end())
ans_c *= 2;
}
if (ans_c > 0)
cout << "+";
if (a | b | c | d)
cout << ans_c << " ";
if (D.size() == 1 && D.find("C10") != D.end())
ans_d = 50;
else
{
if (D.find("S12") != D.end() && D.find("D11") != D.end() && D.find("H1") != D.end() && D.find("H2") != D.end() && D.find("H3") != D.end() && D.find("H4") != D.end() && D.find("H5") != D.end() && D.find("H6") != D.end() && D.find("H7") != D.end() && D.find("H8") != D.end() && D.find("H9") != D.end() && D.find("H10") != D.end() && D.find("H11") != D.end() && D.find("H12") != D.end() && D.find("H13") != D.end())
ans_d = 500;
else if (D.find("H1") != D.end() && D.find("H2") != D.end() && D.find("H3") != D.end() && D.find("H4") != D.end() && D.find("H5") != D.end() && D.find("H6") != D.end() && D.find("H7") != D.end() && D.find("H8") != D.end() && D.find("H9") != D.end() && D.find("H10") != D.end() && D.find("H11") != D.end() && D.find("H12") != D.end() && D.find("H13") != D.end())
{
ans_d = 200;
if (D.find("S12") != D.end())
ans_d -= 100;
if (D.find("D11") != D.end())
ans_d += 100;
}
else
{
set <string> :: iterator it_d;
ans_d = 0;
for (it_d = D.begin(); it_d != D.end(); it_d++)
ans_d += ds[*it_d];
}
if (D.find("C10") != D.end())
ans_d *= 2;
}
if (ans_d > 0)
cout << "+";
if (a | b | c | d)
cout << ans_d << endl;
}
return 0;
}