| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1335455 | ttamx | Fancy Fence (CEOI20_fancyfence) | C11 | 0 ms | 0 KiB |
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int N=1e5+5;
const int MOD=1e9+7;
int n;
int h[N],w[N];
ll ans=0;
ll choose2(ll x){
x%=MOD;
return (x*(x-1)/2)%MOD;
}
int main(){
cin.tie(nullptr)->sync_with_stdio(false);
cin >> n;
for(int i=1;i<=n;i++){
cin >> h[i];
}
for(int i=1;i<=n;i++){
cin >> w[i];
}
for(int i=1;i<=n;i++){
ans=(ans+choose2(h[i]+1)*choose2(h[i]+1)%MOD)%MOD;
}
for(int l=1;l<=n;l++){
int mn=h[l];
for(int r=l+1;r<=n;r++){
mn=min(mn,h[r]);
ans=(ans+choose2(mn+1)*w[l]%MOD*w[r]%MOD)%MOD;
}
}
cout << ans << "\n";
}