Submission #1147944

#TimeUsernameProblemLanguageResultExecution timeMemory
1147944LeonidCukFancy Fence (CEOI20_fancyfence)C++20
100 / 100
52 ms2744 KiB
#include <bits/stdc++.h> using namespace std; long long int mod=1e9+7; long long int najdi(long long int a) { return ((a*(a+1))/2LL)%mod; } int main() { long long int n,a,res=0; cin>>n; vector<long long int>v[2]; stack<pair<int,int>>st; for(int i=0;i<n;i++) { cin>>a; v[0].push_back(a); } for(int i=0;i<n;i++) { cin>>a; v[1].push_back(a); } for(int i=0;i<n;i++) { res=(res+najdi(v[0][i])*najdi(v[1][i]))%mod; long long int sum=0; while(!st.empty()&&(st.top()).first>=v[0][i]) { auto p=st.top(); st.pop(); res=(res+((najdi(p.first)*p.second)%mod)*sum)%mod; sum=(sum+p.second)%mod; } res=(res+((najdi(v[0][i])*v[1][i])%mod)*sum)%mod; st.push({v[0][i],(sum+v[1][i])%mod}); } long long int sum=0; while(!st.empty()) { auto p=st.top(); st.pop(); res=(res+((najdi(p.first)*p.second)%mod)*sum)%mod; sum=(sum+p.second)%mod; } cout<<res; return 0; }
#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...