Submission #945715

#TimeUsernameProblemLanguageResultExecution timeMemory
945715Sandarach151Fancy Fence (CEOI20_fancyfence)C++17
60 / 100
19 ms3936 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int MODD = 1e9+7; const int INV = 5e8+4; int mult(int n){ int temp = 1; temp *= (n); temp %= MODD; temp *= (n+1); temp %= MODD; temp *= INV; temp %= MODD; return temp; } signed main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int n; cin >> n; int h[n]; int w[n]; bool same = true; bool less = true; for(int i=0; i<n; i++){ cin >> h[i]; if(i>0 && h[i]!=h[i-1]){ same = false; } if(i>0 && h[i]<h[i-1]){ less = false; } } for(int i=0; i<n; i++){ cin >> w[i]; } if(n<=1000){ int ans = 0; for(int i=0; i<n; i++){ int temp = mult(w[i]); temp %= MODD; temp *= mult(h[i]); temp %= MODD; ans += temp; ans %= MODD; } for(int i=0; i<n; i++){ int minn = h[i]; for(int j=i+1; j<n; j++){ minn = min(minn, h[j]); int temp = w[i]*w[j]; temp %= MODD; temp *= mult(minn); temp %= MODD; ans += temp; ans %= MODD; } } cout << ans << '\n'; } else if(same){ int summ = 0; for(int i=0; i<n; i++){ summ += w[i]; summ %= MODD; } int ans = mult(h[0]); ans *= mult(summ); ans %= MODD; cout << ans << '\n'; } else if(less){ int ans = 0; for(int i=0; i<n; i++){ int temp = mult(w[i]); temp %= MODD; temp *= mult(h[i]); temp %= MODD; ans += temp; ans %= MODD; } int summ = 0; for(int i=0; i<n; i++){ summ += w[i]; summ %= MODD; } for(int i=0; i<n; i++){ summ -= w[i]; summ += MODD; summ %= MODD; int temp = w[i]*summ; temp %= MODD; temp *= mult(h[i]); temp %= MODD; ans += temp; ans %= MODD; } cout << ans << '\n'; } 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...