Submission #1265832

#TimeUsernameProblemLanguageResultExecution timeMemory
1265832dio_2Fancy Fence (CEOI20_fancyfence)C++20
12 / 100
1 ms328 KiB
#include<bits/stdc++.h> const int MOD = int(1e9) + 7; int f(int a, int b){ b = b % MOD; return int64_t(a) * (a + 1) / 2 % MOD * int64_t(b) * (b + 1) / 2 % MOD; } int main(){ using namespace std; ios::sync_with_stdio(false), cin.tie(nullptr); int n; cin >> n; vector<int> h(n), w(n); for(int i = 0;i < n;i++) cin >> h[i]; for(int i = 0;i < n;i++) cin >> w[i]; int ans = 0; for(int i = 0;i < n;i++){ int l = i, r = i; int64_t sL = 0; int64_t sR = 0; while(l - 1 >= 0 && h[l - 1] >= h[i]){ l -= 1; sL += w[l]; } while(r + 1 < n && h[r + 1] > h[i]){ r += 1; sR += w[r]; } // but it must strictly contain me ans += f(h[i], w[i]) * int64_t(sL+1) % MOD * int64_t(sR+1) % MOD; // this is not neccesaryli contiguous? if(ans >= MOD) ans -= MOD; } cout << ans << '\n'; return 0; }
#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...