Hint
Focus on the fact that Monocarp can freely choose his training days, but Stereocarp is forced to train the day after Monocarp. Monocarp should carefully pick days where the problems he solves outweigh those Stereocarp would solve the following day.
Tutorial
To maximize $$$m - s$$$, Monocarp should always train on the last day, as it contributes
Unable to parse markup [type=CF_MATHJAX]
only if $$$a[i] > b[i+1]$$$, adding the difference $$$a[i] - b[i+1]$$$ to the total. This greedy approach ensures that Monocarp maximizes his problems solved while minimizing Stereocarp's. Iterate through the array once for each test case, adding valid differences and always including $$$a[n]$$$ from the last day.Time Complexity: $$$O(n)$$$ per test case
Space Complexity: $$$O(n)$$$
Implementation
#include <bits/stdc++.h>
using namespace std;
void solve () {
int n;
cin >> n;
vector<int> a(n), b(n);
for (int &i : a) cin >> i;
for (int &i : b) cin >> i;
int res = 0;
for (int i = 0; i < n - 1; i++) {
res += max(0, a[i] - b[i + 1]);
}
cout << res + a.back() << endl;
}
int32_t main () {
ios_base::sync_with_stdio(false);
cin.tie(0);
int t;
cin >> t;
while (t--) {
solve();
}
return 0;
}