因为 \(\{a_n\},\{b_n\}\) 单调不下降,即都已经排好序,直接从小到大依次比较就行了。
我们可以考虑先求出所有的气球数,减去不能派发的气球数,得出能派发的气球数。
当 \(b_i > a_i\) 时,即分发的气球有多的时,需要从气球总和中减去多余的气球,具体可以见代码。
#include<bits/stdc++.h>
using namespace std;
int n, a[100005], b[100005], ans;
int main() {
scanf("%d", &n);
for(int i = 1; i <= n; i++) scanf("%d", &a[i]);
for(int i = 1; i <= n; i++) scanf("%d", &b[i]), ans += b[i];
for(int i = 1; i <= n; i++)
if(b[i] > a[i]) ans -= b[i] - a[i];
printf("%d\n", ans);
return 0;
}