Submission #476159

#TimeUsernameProblemLanguageResultExecution timeMemory
476159gvancakAddk (eJOI21_addk)C++11
92 / 100
1854 ms5872 KiB
#include <iostream> using namespace std; long long n,k,q,a[100001],p[100001],t,x,ans,l,r,m,y; int main() { cin >> n >> k; for (int i=1; i<=n; i++){ cin >> a[i]; p[i]=p[i-1]+a[i]; } cin >> q; for (int o=1; o<=q; o++){ cin >> t; ans=0; if (t==1){ for (int i=1; i<=k; i++){ cin >> x; } } else{ cin >> l >> r >> m; if (r-l+1<m*2-1){ x=r-(l+m-1)+1; for (int i=l; i<=l+m-1-1; i++){ if (x<=i-l+1){ y=i; break; } ans+=min(i-l+1,x)*a[i]; } ans+=(p[l+m-2]-p[y-1])*x; for (int i=l+m-1-1+1; i<=r; i++){ ans+=min(r-i+1,x)*a[i]; } cout<<ans<<endl; } else{ x=m; /* for (int i=l; i<=l+m-1-1; i++){ ans+=min(i-l+1,x)*a[i]; } ans+=(p[r-m]-p[l+m-1-1])*m; for (int i=r-m+1; i<=r; i++){ ans+=min(r-i+1,x)*a[i]; }*/ ans=(p[r]-p[l-1])*m; for (int i=l; i<=l+m-2; i++){ ans-=a[i]*(m-(i-l+1)); ans-=a[r-(i-l)]*(m-(i-l+1)); } cout<<ans<<endl; } } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...