专栏链接
个人感觉思路比较简单,码量比较小
#include<iostream>
#include<algorithm>
using namespace std;
int n;
const int maxn = 2e5+10;
int k[maxn], s=1999999999;
long long ans;
long long mod = 1e9+7;
int main()
{
cin >> n;
for(int i = 1; i <= n; i++) cin >> k[i];
for(int i = 1; i <= n; i++) {
int t;
cin >> t;
s = min(s, max(t-1, k[i]-t));
k[i] = min(t-1, k[i]-t);
}
sort(k+1, k+n+1);
for(int i = 1; i <= n; i++) {
if(k[i] >= s) k[i] = s;
ans = ((((k[i]-k[i-1]) + ans)%mod)*2)%mod;
}
ans += (s-k[n])%mod;
ans = (ans+1) % mod;
cout << ans << endl;
return 0;
}