#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];
        if(i==0) cntw[i]=w[i];
        else cntw[i]=w[i]+cntw[i-1];
        cntw[i]%=mod;
    }
    lint sum=(((1+cntw[n-1])%mod)*(cntw[n-1]%mod)/2);
    lint re=0;
    sum%=mod;
    for(int i=0;i<n;i++){
        if(h[i]==2 && h[i+1]==2) re+=w[i];
        else if(h[i]==2){
            re+=w[i];
            lint huh=(((re+1)%mod)*(re%mod));
            huh%=mod;
            sum+=huh; sum%=mod;
            re=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... |