Submission #1100030

#TimeUsernameProblemLanguageResultExecution timeMemory
1100030ocasuFancy Fence (CEOI20_fancyfence)C++17
12 / 100
1 ms348 KiB
#include <bits/stdc++.h> using namespace std; #define int long long signed main(){ 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]; vector<int> sumLeft(n,0), sumRight(n,0); stack<int> sL,sR; for (int i=0; i<n; i++){ while (!sL.empty() and h[sL.top()]>h[i]){ sumLeft[i]+=sumLeft[sL.top()]+w[sL.top()]; sL.pop(); } sL.push(i); } for (int i=n-1; i>=0; i--){ while (!sR.empty() and h[sR.top()]>=h[i]){ sumRight[i]+=sumRight[sR.top()]+w[sR.top()]; sR.pop(); } sR.push(i); } ///rwgrgw int ans=0; for (int i=0; i<n; i++){ int hors = sumLeft[i]*sumRight[i] + sumLeft[i]*w[i]+sumRight[i]*w[i] + (w[i]*(w[i]-1))/2 + w[i]; int verts = (h[i]*(h[i]-1))/2 + h[i]; ans+=hors*verts; } 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...