Submission #790899

#TimeUsernameProblemLanguageResultExecution timeMemory
79089912345678Fancy Fence (CEOI20_fancyfence)C++17
55 / 100
40 ms8776 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long const ll nx=1e5+5, mod=1e9+7; ll n, ans, h, w, sm, H[nx], W[nx]; stack<pair<pair<ll, ll>, ll>> s; ll cal(ll x) { return (x*(x+1)/2)%mod; } int main() { cin.tie(NULL)->sync_with_stdio(false); cin>>n; for (int i=0; i<n; i++) cin>>H[i]; for (int i=0; i<n; i++) cin>>W[i]; for (int i=0; i<n; i++) { ll h=H[i], w=W[i]; ans=(ans+(cal(h)*cal(w))%mod)%mod; ll sw=0; while (!s.empty()&&s.top().first.first>h) { sw+=s.top().first.second; sm=((sm-s.top().second)%mod+mod)%mod; s.pop(); } ll tmp=(cal(h)*sw)%mod; s.push({{h, sw}, tmp}); sm=(sm+tmp)%mod; ans=(ans+sm*w)%mod; tmp=(cal(h)*w)%mod; s.push({{h, w}, tmp}); sm=(sm+tmp)%mod; } 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...