Submission #1188348

#TimeUsernameProblemLanguageResultExecution timeMemory
1188348NoMercyFancy Fence (CEOI20_fancyfence)C++20
100 / 100
15 ms3400 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; const ll mod = 1e9 + 7; int32_t main () { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); 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]; ll sum = 0, res = 0; stack<array<ll, 2>> st; for (int i = 0;i < N;i ++) { ll cnt = w[i]; while (st.size() > 0 && st.top()[0] >= h[i]) { cnt = (cnt + st.top()[1]) % mod; sum = (sum - (((st.top()[0] * (st.top()[0] + 1) / 2) % mod) * st.top()[1] % mod) + mod) % mod; sum = (sum + (((h[i] * (h[i] + 1) / 2) % mod) * st.top()[1] % mod)) % mod; st.pop(); } st.push({h[i], cnt}); res = (res + (sum * w[i] % mod) % mod); res = (res + (((h[i] * (h[i] + 1) / 2) % mod) * ((w[i] * (w[i] + 1) / 2) % mod) % mod)) % mod; sum = (sum + (((h[i] * (h[i] + 1) / 2) % mod) * w[i] % mod)) % mod; // cout << res << " " << sum << " " << cnt << "\n"; } cout << res << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...