#include <bits/stdc++.h>
using namespace std;
#define lint long long int
int mod=1e9+7;
int main(){
int n;
cin>>n;
vector<lint> h(n);
vector<lint> w(n);
vector<lint> cntw(n,0);
for(int i=0;i<n;i++){
cin>>h[i];
}
for(int i=0;i<n;i++){
cin>>w[i];
}
cntw[n-1]=w[n-1];
for(int i=n-2;i>=0;i--){
cntw[i]=cntw[i+1]+w[i];
cntw[i]%=mod;
}
for(int i=1;i<n;i++){
if(w[i]==w[i-1]) cntw[i]==cntw[i-1];
}
// lint sum=(((1+cntw[n-1])%mod)*(cntw[n-1]%mod)/2);
// sum%=mod;
lint reh=0;
lint sum=0;
for(int i=0;i<n;i++){
if(i>0) if(h[i]!=h[i-1]) reh=h[i-1];
if(h[i]!=h[i+1] || i==n-1){
lint huh=(((cntw[i]+1)%mod)*(cntw[i]%mod)/2);
huh%=mod;
lint huh2=(((h[i]+1)%mod)*(h[i]%mod)/2);
huh2%=mod;
huh2-=reh;
sum+=huh*huh2; sum%=mod;
// cout<<sum<<endl;
reh=0;
}
}
cout<<sum;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |