求助,^_^思路哪儿出问题了^_^
查看原帖
求助,^_^思路哪儿出问题了^_^
782728
gilig1225楼主2024/9/25 12:06
#include<bits/stdc++.h>
using namespace std;
long long n,x,a[1005],b[1005],k,sum,cnt1,cnt2,cnt3;
int main(){
	cin>>n;
	for(int i = 1; i <= n; i++)
		cin >> a[i];
	for(int i = 1;i <= n; i++){
		cin >> x;
		if(x < a[i])   cnt1++;
		if(x > a[i])   cnt2++;
		if(x == a[i])  cnt3++;   // cnt1,2,3分别记录胜负平的场次 
		if(x > a[i])
			b[++k] = x - a[i] + 1;  // 输的场次,变赢所需要分数存数组 
	}
	if(cnt1 > cnt2)
		cout << 0 << endl;  // 不需要加分 已经赢了 
	else{
		sort(b + 1,b + k + 1); 
		int step = cnt2-cnt1;
		if(step < cnt3)
			cout<<step+1<<endl;  // 优先改平局分数,一场加1就可以; 
		else{
			sum += cnt3;
			step -= cnt3;
			step = step/2+1;    //平局不够,差10场就要改6场,11场也要改6场 
			for(int i = 1; i <= step; i++)
				sum += b[i];    //加上改的分 
			cout << sum << endl;
		}		
	}
	return 0;
} 
2024/9/25 12:06
加载中...