Submission #790875

#TimeUsernameProblemLanguageResultExecution timeMemory
79087512345678Fancy Fence (CEOI20_fancyfence)C++17
25 / 100
19 ms6864 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; 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+(((h+1)*h/2)%mod*((w+1)*w/2)%mod)%mod)%mod; //cout<<i<<' '<<ans<<' '<<sm<<'\n'; 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=(((h+1)*h/2)%mod*sw)%mod; s.push({{h, sw}, tmp}); sm=(sm+tmp)%mod; ans=(ans+sm*w)%mod; //cout<<i<<' '<<ans<<' '<<sm<<'\n'; tmp=(((h+1)*h/2)%mod*w)%mod; s.push({{h, w}, tmp}); sm+=tmp; } 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...