#include<bits/stdc++.h>
using namespace std;
#define int long long
#define all(x) x.begin(),x.end()
#define ff first
#define ss second
#define pb push_back
const int mod=1e9+7;
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
int n;
cin>>n;
bool sb2=1;
vector <int> h(n),w(n);
for(int i=0;i<n;i++){
cin>>h[i];
if(h[i]>2)sb2=0;
}
for(int i=0;i<n;i++){
cin>>w[i];
}
int ans=0;
if(sb2){
int x=0;
for(int i=0;i<n;i++){
x+=w[i];
}
int y=x+1;
if(x%2==0)x/=2;
else y/=2;
ans+=((x%mod)*(y%mod))%mod;
ans%=mod;
x=0;
for(int i=0;i<n;i++){
if(h[i]==2){
x+=w[i];
}
else{
y=x+1;
ans+=((x%mod)*(y%mod))%mod;
ans%=mod;
x=0;
}
}
if(x!=0){
y=x+1;
ans+=((x%mod)*(y%mod))%mod;
ans%=mod;
}
cout<<ans%mod<<"\n";
return 0;
}
}
/*
10^14*(10^14+1)/2
*/
# | 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... |