95pts求大佬调调QAQ
查看原帖
95pts求大佬调调QAQ
803102
Ripuka楼主2023/10/12 21:41

95pts求调。WA第15

#include<bits/stdc++.h>

using namespace std;

#define int long long
typedef pair<int, int>PII;
const int mod = 998244353;
const int inf = 2147483647;

const int N = 1e5 + 10;
int n, m, q, L;
int c[N][110];
int d[N];
int level[N];
int a[N];
bool mas[N];
bool build[N];
int have[2];
int plc[2];
int got[2];
signed main()
{
	cin >> n >> m >> q >> L;
	for (int i = 0; i < n; ++i)
	{
		for (int j = 0; j < L; ++j)
		{
			cin >> c[i][j];
		}
	}
	for (int i = 0; i < n; ++i)
	{
		cin >> d[i];	
	}
	int op, k;
	int cur = 1;
	int loser = -1;
	have[0] = have[1] = m;
	if (have[0] < 0)
	{
		loser = 0;
	}
	while (cin >> op && op)
	{
		cin >> k;
		if (loser != -1)
		{
			continue;
		}
		if (op == 1)
		{
			cur ^= 1;
			if (!cur)
			{
				have[0] += got[0];
				have[1] += got[1];
			}
			for (int i = 1; i <= k; ++i)
			{
				plc[cur]++;
				plc[cur] %= n;
				int p = plc[cur];
				if (build[p])
				{
					if (mas[p] == cur)
					{
						have[cur] += a[p];
					}
					else {
						have[cur] -= a[p];
						have[cur ^ 1] += a[p];

						if (have[cur] < 0)
						{
							loser = cur;
							break;
						}
					}
				}
			}
		}
		else
		{
			int p = plc[cur];
			if (build[p] && mas[p] != cur)continue;
			mas[p] = cur;
			if (!build[p])
			{
				got[cur] += d[p];
				build[p] = 1;
			}
			while (k-- && have[cur] >= c[p][level[p]] && level[p] < L)
			{
				a[p] += c[p][level[p]];
				have[cur] -= c[p][level[p]];
				++level[p];
			}
			if (have[cur] < 0)
			{
				loser = cur;
				continue;
			}
		}
	}
	have[0] += got[0];
	have[1] += got[1];
	if (loser != -1)
		cout << (loser ? "Merry" : "Renko");
	else cout << have[0] << " " << have[1] << endl;
}
2023/10/12 21:41
加载中...