Submission #1202665

#TimeUsernameProblemLanguageResultExecution timeMemory
1202665peraFancy Fence (CEOI20_fancyfence)C++20
12 / 100
0 ms328 KiB
#include<bits/stdc++.h> using namespace std; int main(){ cin.tie(0)->sync_with_stdio(0); int n; cin >> n; vector<long long> h(n + 1); for(int i = 1;i <= n;i ++){ cin >> h[i]; } vector<long long> w(n + 1); for(int i = 1;i <= n;i ++){ cin >> w[i]; } vector<int> L(n + 1); for(int i = 1;i <= n;i ++){ L[i] = i - 1; while(L[i] > 0 && h[i] < h[L[i]]){ L[i] = L[L[i]]; } } vector<int> R(n + 1); for(int i = n;i >= 1;i --){ R[i] = i + 1; while(R[i] <= n && h[i] <= h[R[i]]){ R[i] = R[R[i]]; } } long long ans = 0; vector<long long> sum(n + 1); for(int i = 1;i <= n;i ++){ sum[i] = sum[i - 1] + w[i]; } for(int i = 1;i <= n;i ++){ ans += w[i] * (w[i] + 1) * h[i] * (h[i] + 1) / 4; ans += ((sum[i] - sum[L[i]]) * (sum[R[i] - 1] - sum[i - 1]) - 1LL * w[i] * w[i]) * h[i] * (h[i] + 1) / 2; } cout << ans << '\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...