B4033 [語言月賽 202409] 考試 題解

sad_lin發表於2024-09-21

存下輸贏代價,計算時先減為平局,判斷輸贏,如果還是輸,那繼續加一變為勝利這局,判斷輸贏。

#include <bits/stdc++.h>
using namespace std;
#define ll long long 
const int N=1e6+10;

int n;
int a[N];
int b[N];
int c[N]; 

int main(){
    ios::sync_with_stdio(false);
	cin>>n;
	
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	
	for(int i=1;i<=n;i++){
		cin>>b[i];
		c[i]=b[i]-a[i]; 
	}
	int x=0,y=0; 
	for(int i=1;i<=n;i++){
		if(c[i]>0){
			y++;
		}
		if(c[i]<0){
			x++;
		}
	} 
	
	sort(c+1,c+n+1);
	int ans=0;
	
	for(int i=1;i<=n;i++){
		if(x>y){
			break;
		}
		if(c[i]<0){
			continue;
		}
		else if(c[i]>0){
			ans+=c[i];
			y--;	
		}
		if(x>y){
			break; 
		} 
		ans++;
		x++;
	}
	
	cout<<ans;
	
    return 0;
}

相關文章