CF1681A 超时求助
查看原帖
CF1681A 超时求助
706914
a046957楼主2022/5/27 21:29

好奇怪啊,我的代码在本机测试时才6ms,答案也全部正常

但是上传上去却超时报错,求大佬指点>︿<

#include <iostream>
#include <algorithm>
using namespace std;

bool IF(int a, int b, int arr0[], int arr1[], bool first = 0)  // return 0 为 Alice 赢,默认 Alice 先手
{
	sort(arr0, arr0 + a);
	sort(arr1, arr1 + b);
	if (arr0[a - 1] > arr1[b - 1])
	{
		return 0;
	}
	else if (arr0[a - 1] < arr1[b - 1])
	{
		return 1;  
	}
	else
	{
		if (first == 0)  // 判断先手,0 为 Alice,1 为 Bob
		{
			return 0;
		}
		else
		{
			return 1;
		}
	}
}

int main() {
	int t, x = 0;
	bool out[1000]{};
	cin >> t;
	for (int i = 0; i < t; i++)
	{
		// a = Alice 的牌数,b = Bob 的牌数;arr0 = Alice 的牌上数字,arr1 = Bob 的牌上数字
		int a, b, arr0[50]{}, arr1[50]{};

		// 数据写入
		cin >> a;
		for (int i = 0; i < a; i++)
		{
			cin >> arr0[i];
		}
		cin >> b;
		for (int i = 0; i < b; i++)
		{
			cin >> arr1[i];
		}

		// Alice 先手
		if (IF(a, b, arr0, arr1) == 0)  
		{
			out[x] = 0;  // Win
			x++;
		}
		else
		{
			out[x] = 1;
			x++;
		}
		// Bob 先手
		if (IF(a, b, arr0, arr1, 1) == 0)  // 将 先手 设定为 Bob
		{
			out[x] = 0;
			x++;
		}
		else
		{
			out[x] = 1;
			x++;
		}
	}

	for (int q = 0; q < x; q++)
	{
		if (out[q] == 0)
		{
			cout << "Alice" << endl;
		}
		else
		{
			cout << "Bob" << endl;
		}
	}

	return 0;
}
2022/5/27 21:29
加载中...