#include <bits/stdc++.h>
#define ll long long int
#define pb push_back
#define fi first
#define se second
using namespace std;
int main() {
int n; cin >> n; vector<ll> h(n), w(n);
for (int i = 0; i < n; i++) cin >> h[i];
for (int i = 0; i < n; i++) cin >> w[i];
deque<pair<ll,ll>> r; ll cnt = 0;
for (int i = 0; i < n; i++) {
if (r.empty()) {r.pb({h[i], w[i]}); continue;}
if (h[i] != r.back().fi) {r.pb({h[i], w[i]}); continue;}
r.back().se += w[i]; r.back().se %= 1000000007;
}
ll base = 0;
for (int i = r.size()-1; i >= 0; i--) {
ll hh = r[i].fi, ww = r[i].se;
ll hs = ((hh+1)*hh)/2, ws = ((ww+1)*ww)/2;
hs %= 1000000007; ws %= 1000000007;
cnt += (hs*ws)%1000000007; cnt %= 1000000007;
ll ch = (ww*base)%1000000007;
cnt += ch*hs; cnt %= 1000000007;
base += ww; base %= 1000000007;
}
cout << cnt;
return 0;
}
# | 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... |