#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 x=0,sum=0;
for(int i=0;i<n;i++){
x+=w[i];
sum+=w[i];
}
int y=x+1;
int ans=0;
if(sb2){
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;
}
bool sm=1;
for(int i=0;i<n;i++){
if(h[i]!=h[0])sm=0;
}
if(sm){
if(x%2==0)x/=2;
else y/=2;
int z=((x%mod)*(y%mod))%mod;
int a=h[0];
int b=h[0]+1;
if(a%2==0)a/=2;
else b/=2;
int c=((a%mod)*(b%mod))%mod;
ans=(z*c)%mod;
cout<<ans<<"\n";
return 0;
}
bool inc=1;
for(int i=1;i<n;i++){
if(h[i]<h[i-1])inc=0;
}
if(inc){
for(int i=0;i<n;i++){
int a=h[i];
int b=h[i]+1;
if(a%2==0)a/=2;
else b/=2;
int c=((a%mod)*(b%mod))%mod;
x=sum;
y=x+1;
if(x%2==0)x/=2;
else y/=2;
int z=((x%mod)*(y%mod))%mod;
x=sum;
int q=x-w[i];
int r=q+1;
if(q%2==0)q/=2;
else r/=2;
int t=((q%mod)*(r%mod))%mod;
int d=(z+mod-t)%mod;
//cout<<d<<"\n";
d=(d*c)%mod;
ans+=d;
ans%=mod;
sum-=w[i];
}
cout<<ans<<"\n";
return 0;
}
for(int i=0;i<n;i++){
int a=h[i];
int b=h[i]+1;
if(a%2==0)a/=2;
else b/=2;
int c=((a%mod)*(b%mod))%mod;
int x=w[i];
int y=w[i]+1;
if(x%2==0)x/=2;
else y/=2;
int z=((x%mod)*(y%mod))%mod;
ans+=(c*z)%mod;
ans%=mod;
int mn=h[i];
for(int j=i+1;j<n;j++){
mn=min(mn,h[j]);
int x=(w[i]*w[j])%mod;
int a=mn;
int b=mn+1;
if(a%2==0)a/=2;
else b/=2;
int c=((a%mod)*(b%mod))%mod;
x*=c;
x%=mod;
ans+=x;
ans%=mod;
}
}
cout<<ans<<"\n";
}
/*
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... |