WA on #2 90 pts 求调!(玄关,先到先得)
查看原帖
WA on #2 90 pts 求调!(玄关,先到先得)
1004336
Hope5365楼主2024/4/27 11:51

马蜂丑,请各位DALAO们多多见谅

#include <iostream>
#include <string>
using namespace std;
// #define debug() cout << "OK" << endl

const int N = 1e2 + 10,H[13] = {-50,-2,-3,-4,-5,-6,-7,-8,-9,-10,-20,-30,-40};
int n;
string a[5][N];

int to_int(string s)
{ 
	int sum = 0;
	for(int i = 0;i < s.size();i ++) sum = sum * 10 + (s[i] - '0');
	return sum;
}

int get(int p,int sumh,int cnt,bool d11,bool s12)
{
    if (cnt == 0) return 0;
	if (p == 2 && cnt == 1) return 50;
	if (sumh != -194) return (sumh + d11 * 100 + s12 * -100) * p;
	if (s12 && d11) return 500 * p;
	return 200 * p;
}

int main()
{
//	int sum = 0;
//	for(int i = 0;i < 13;i ++) sum += H[i];
//	cout << sum << endl;
	ios::sync_with_stdio(0);
	while (1)
	{
		int cnt = 0,t[N];
		for(int j = 1;j <= 4;j ++)
		{
			cin >> t[j];
			cnt += t[j];
			for(int i = 1;i <= t[j];i ++) cin >> a[j][i];
		}
		if (!cnt) return 0;
		for(int k = 1;k <= 4;k ++)
		{
			string s[N];
			for(int i = 1;i <= t[k];i ++) s[i] = a[k][i];
			int n = t[k],p = 1,sumh = 0,cnt = 0;
			bool d11 = 0,s12 = 0;
			for(int i = 1;i <= n;i ++)
			{
				if (s[i] == "S12") s12 = 1,cnt ++;
				if (s[i] == "D11") d11 = 1,cnt ++;
				if (s[i] == "C10") p = 2,cnt ++;
				if (s[i][0] == 'H') cnt ++,sumh += H[to_int(s[i].substr(1)) - 1];
			}
//			debug();
			int x = get(p,sumh,cnt,d11,s12);
			if (k == 1 && x == 2)
			{
			    cout << "+1 ";
			    continue;
			}
			if (x <= 0) cout << x << ' ';
			else cout << "+" << x << ' ';
		}
		cout << endl;
	}
	return 0;
}
2024/4/27 11:51
加载中...