只关注两个差分数组之间的差值总量即可
#include <bits/stdc++.h>
using namespace std;
int N;
int p_value, t_value;
int p_diff[100010], t_diff[100010];
void diff_insert(int diff_arr[], int l, int r, int v)
{
diff_arr[l] += v;
diff_arr[r+1] -= v;
}
int main(void)
{
cin >> N;
for (int i = 0; i < N; i++)
{
cin >> p_value;
diff_insert(p_diff, i, i, p_value);
}
for (int i = 0; i < N; i++)
{
cin >> t_value;
diff_insert(t_diff, i, i, t_value);
}
int smaller_cnt = 0, bigger_cnt = 0;
for (int i = 0; i < N; i++)
{
if (p_diff[i] < t_diff[i])
smaller_cnt += (t_diff[i] - p_diff[i]);
else
bigger_cnt += (p_diff[i] - t_diff[i]);
}
cout << max(smaller_cnt, bigger_cnt);
return 0;
}