Submission #1006892

#TimeUsernameProblemLanguageResultExecution timeMemory
1006892HanksburgerFancy Fence (CEOI20_fancyfence)C++17
12 / 100
1 ms348 KiB
#include <bits/stdc++.h> using namespace std; long long h[100005], w[100005], mod=1e9+7; vector<pair<long long, long long> > vec; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); long long n, cur=0, ans=0; cin >> n; for (long long i=1; i<=n; i++) cin >> h[i]; for (long long i=1; i<=n; i++) cin >> w[i]; vec.push_back({-1, 0}); vec.push_back({0, 0}); for (long long i=1; i<=n+1; i++) { while (vec[vec.size()-2].first>=h[i]) { long long x=(cur-vec[vec.size()-1].second)*(cur-vec[vec.size()-1].second+1)/2%mod; long long y=(vec[vec.size()-1].first+vec[vec.size()-2].first+1)*(vec[vec.size()-1].first-vec[vec.size()-2].first)/2%mod; ans+=x*y%mod; vec.pop_back(); } if (vec[vec.size()-1].first>h[i]) { long long x=(cur-vec[vec.size()-1].second)*(cur-vec[vec.size()-1].second+1)/2%mod; long long y=(vec[vec.size()-1].first+h[i]+1)*(vec[vec.size()-1].first-h[i])/2%mod; ans+=x*y%mod; vec[vec.size()-1].first=h[i]; } else vec.push_back({h[i], cur}); cur+=w[i]; } cout << ans; }
#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...