me too
```cpp
#include <bits/stdc++.h>
using namespace std;
int status,player[4][20][2],result[10000][4],number,change[14] = {0,-50,-2,-3,-4,-5,-6,-7,-8,-9,-10,-20,-30,-40};
void print_result()
{
int i,j;
for(i = 0;i < number;i++)
{
for(j = 0;j < 4;j++)
{
if(result[i][j] > 0)
printf("+");
printf("%d ",result[i][j]);
}
printf("\n");
}
}
bool check(int card[2],char color,int ds)
{
return card[0] == color && card[1] == ds;
}
int change_score(int card[2])
{
if(card[0] == 'H')
return change[card[1]];
if(check(card,'S',12))
return -100;
if(check(card,'D',11))
return 100;
return 0;
}
void chuli()
{
int i,j,jishu,c10_status = 0,yz_count = 0;
for(i = 0,jishu = 0;i < 4;i++,jishu = 0,c10_status = 0,yz_count = 0)
{
for(j = 1;j <= player[i][0][0];j++)
{
result[number][i] += change_score(player[i][j]);
if(player[i][j][0] == 'H')
jishu++;
if(check(player[i][j],'S',12))
yz_count++;
if(check(player[i][j],'D',11))
yz_count++;
if(check(player[i][j],'C',10))
c10_status = 1;
}
if(jishu == 13)
{
result[number][i] += 394;
if(yz_count == 2)
{
result[number][i] += 500;
if(c10_status)
result[number][i] += 300;
}
else if(c10_status)
result[number][i] *= 2;
}
if(c10_status)
{
if(player[i][0][0] > 1)
result[number][i] *= 2;
else
result[number][i] = 50;
}
}
}
void read_player(int player_number)
{
int i;
char j;
scanf("%d", &player[player_number][0][0]);
for(i = 1;i <= player[player_number][0][0];i++)
{
for(j = getchar();j == ' ' || j == '\n';j = getchar());
player[player_number][i][0] = j;
scanf("%d",&player[player_number][i][1]);
}
status = max(status,player[player_number][0][0]);
}
int main()
{
int j;
do
{
status = 0;
for(j = 0;j < 4;j++)
read_player(j);
if(status)
{
chuli();
number++;
}
}while(status);
print_result();
return 0;
}
```
by Jason331 @ 2024-01-30 21:49:08
@[Tsuki091117](/user/1069816)
\#1第一个测试点就是输出1000,你这直接判断16就跳出去了,后面3个0就不输入了嘛。
by Chenyufeng040525 @ 2024-03-16 21:17:07