#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;
}
// h = 1, bottom
ll base = 0;
for (int i = 0; i < n; i++) {base += w[i]; base %= 1000000007;}
ll baser = ((base+1)*base)/2; baser %= 1000000007;
cnt += baser; cnt %= 1000000007;
for (auto x : r) {
ll hh = x.fi, ww = x.se;
if (hh == 1) continue;
// h = 1, top; h = 2
ll rect = (ww+1)*ww; rect %= 1000000007;
cnt += rect; cnt %= 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... |