#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... |