贪心写的虽然过了但是有bug
  • 板块P1489 猫狗大战
  • 楼主Punny
  • 当前回复1
  • 已保存回复1
  • 发布时间2022/4/1 21:40
  • 上次更新2023/10/28 04:54:05
查看原帖
贪心写的虽然过了但是有bug
69293
Punny楼主2022/4/1 21:40
/*****************
 *Author:Punny   *
 *Date:2022/04/01*
******************/
#include<bits/stdc++.h>
#define ll long long
#define JB std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);
#define endl "\n"
using namespace std;
int n;
int a[200];
int b[200];
int suma,sumb,numa,numb,nowabs;
int main() {
	JB
	cin>>n;
	numa=n/2;
	numb=n-numa;
	for(int i=1;i<=numa;i++) cin>>a[i],suma+=a[i];
	for(int i=1;i<=numb;i++) cin>>b[i],sumb+=b[i];
	nowabs=abs(suma-sumb);
	for(int i=1;i<=numa;i++){
		for(int j=1;j<=numb;j++){
			if(abs(suma-a[i]+b[j]-(sumb-b[j]+a[i]))<nowabs){
				suma-=a[i];
				suma+=b[j];
				sumb-=b[j];
				sumb+=a[i];
				swap(a[i],b[j]);
				nowabs=abs(suma-sumb);
			}
		}
	}
	cout<<min(suma,sumb)<<" "<<max(suma,sumb);
	return 0;
}

这组样例 9 39 7 21 33 17 25 18 25 31 答案应该是108 108 结果输出是107 109 问题在哪呢

2022/4/1 21:40
加载中...