请问这个代码为什么最后一个点会RE
查看原帖
请问这个代码为什么最后一个点会RE
186472
AC_loveRealNewbie楼主2023/7/20 17:07

其他测试点都过了,都是最后一个点RE了

#include <bits/stdc++.h>
using namespace std;
int n;
struct machine
{
	int a;
	int b;
	int data;
};
machine p[5050];
bool cmp(machine i, machine j)
{
	if(i.a >= i.b && j.a <= j.b)
		return false;
	else if(i.a <= i.b && j.a >= j.b)
		return true;
	else if(i.a < i.b && i.a > j.a)
		return false;
	else if(i.a < i.b && i.a <= j.a)
		return true;
	else if(i.a > i.b && i.b < j.b)
		return false;
	else
		return true;
}
int main()
{
	cin >> n;
	for(int i = 1; i <= n; i = i + 1)
	{
		cin >> p[i].a;
		p[i].data = i;
	}
	for(int i = 1; i <= n; i = i + 1)
		cin >> p[i].b;
	sort(p + 1, p + 1 + n, cmp);
	int ans = 0;
	int am = 1, bm = 0;
	while(true)
	{
		if(p[am].a > 0)
			p[am].a -= 1;
		if(p[am].a == 0)
			am += 1;
		if(p[bm].b > 0)
			p[bm].b -= 1;
		if(p[bm].b == 0 && bm < am - 1)
			bm += 1;
		ans += 1;
		if(bm >= n && p[bm].b == 0)
			break;
	}
	cout << ans << endl;
	for(int i = 1; i <= n; i = i + 1)
		cout << p[i].data << " ";
	return 0;
}
2023/7/20 17:07
加载中...