Submission #1103504

#TimeUsernameProblemLanguageResultExecution timeMemory
1103504tsengangAddk (eJOI21_addk)C++14
36 / 100
2049 ms4300 KiB
#include <bits/stdc++.h> #define ll long long #define ff first #define ss second #define all(x) x.begin(),x.end() #define rall(x) x.rbegin(),x.rend() #define pb push_back #define ertunt return using namespace std; ll n,q,k; struct segtree{ int n; vector<ll>d; segtree(ll n){ d.resize(4*n); build(1,1,n); } void build(ll v,ll l,ll r){ if(l==r){ d[v]=0; return; } ll m=(l+r)/2; build(v*2,l,m); build(v*2+1,m+1,r); d[v]=d[v*2]+d[v*2+1]; } ll query(ll v,ll l,ll r,ll L,ll R){ if(L>R||l>R||L>r) return 0; if(L<=l&&r<=R){ return d[v]; } ll m=(l+r)/2; return query(v*2,l,m,L,R)+query(v*2+1,m+1,r,L,R); } void update(ll v,ll l,ll r,ll pos,ll val){ if(pos<l||r<pos) return; if(l==r){ d[v]=val; return; } ll m=(l+r)/2; update(v*2,l,m,pos,val); update(v*2+1,m+1,r,pos,val); d[v]=d[v*2]+d[v*2+1]; } void updater(ll node, ll L, ll R, ll l, ll r, ll val){ if (L > R || L > r || R < l) return; if (L == R){ d[node] /= val; return; } ll mid = (L + R) / 2; updater(node*2, L, mid, l, r, val); updater(node*2 + 1, mid + 1, R, l, r, val); d[node] = d[node*2] + d[node*2+1]; } void update2(ll v,ll l,ll r,ll pos){ if(pos<l||r<pos) return; if(l==r){ d[v]/=k; return; } ll m=(l+r)>>1; update2(v*2,l,m,pos); update2(v*2+1,m+1,r,pos); d[v]=d[v*2]+d[v*2+1]; } }; int main() { ll n, k; cin >> n >> k; ll a[n+1]; ll b[n+1]; b[0] = 0; for(ll i = 1; i <= n; i++){ cin >> a[i]; b[i] = b[i-1]+a[i]; } ll q; cin >> q; while(q--){ ll s; cin >> s; if(s==2){ ll l,r,m; cin >> l >> r >> m; ll ans = 0; for(ll i = l - 1; i <= r-m; i++){ ans+=b[i+m] - b[i]; } cout << ans << '\n'; } if(s == 1){ cin >> s; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...