Submission #851283

#TimeUsernameProblemLanguageResultExecution timeMemory
851283Jawad_Akbar_JJFancy Fence (CEOI20_fancyfence)C++14
0 / 100
10 ms8024 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int N = 1e5 + 10; int r[N][3]; int w[N]; int h[N]; int mod = 1e9 + 7; int power(int a,int b){ if (b==0) return 1; int ans = power(a,b/2); ans = ans*ans; ans %= mod; if (b%2) ans = ans*a; return ans%mod; } int mod_inv(int k){ return power(k,mod-2); } int asd(int a){ int ans = (a*(a+1)); ans = ans%mod; ans = ans*mod_inv(2); ans = ans% mod; return ans; } signed main(){ int n; cin>>n; for (int i=1;i<=n;i++) cin>>h[i]; int ans = 0; for (int i=1;i<=n;i++){ cin>>w[i]; int a = (w[i]*(w[i]+1)); a = a % mod; a = mod_inv(2) * a; ans += a; ans %= mod; if (h[i]==2) ans += 2*a; ans %= mod; } for (int i=n;i>=1;i--){ for (int j=1;j<=h[i];j++){ r[i][j] = r[i+1][j]; ans += (r[i][j]*j)%mod; ans %= mod; r[i][j] = r[i+1][j] + w[i]; r[i][j] %= mod; // cout<<"At "<<i<<" "<<j<<" added "<<r[i][j]*j<<endl; } } cout<<ans<<endl; }
#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...