Submission #1172758

#TimeUsernameProblemLanguageResultExecution timeMemory
1172758baqqon_Addk (eJOI21_addk)C++20
36 / 100
23 ms584 KiB
/**

  III     U   U  N   N  DDDD   EEEEE  RRRR   SSSS  TTTTT  AAAAA  N   N  DDDD      I  TTTTT     N   N   OOO   W   W
   I      U   U  NN  N  D   D  E      R   R  S       T    A   A  NN  N  D   D     I    T       NN  N  O   O  W   W
   I      U   U  N N N  D   D  EEEE   RRRR   SSSS    T    AAAAA  N N N  D   D     I    T       N N N  O   O  W W W
   I      U   U  N  NN  D   D  E      R  R      S    T    A   A  N  NN  D   D     I    T       N  NN  O   O  WW WW
  III     UUUUU  N   N  DDDD   EEEEE  R   R  SSSS    T    A   A  N   N  DDDD      I    T       N   N   OOO   W   W

**/

#include <bits/stdc++.h>
using namespace std;

#define ent '\n'
#define F first
#define S second
#define in insert                                                            
#define no "NO\n"                                                            
#define yes "YES\n"                                                         
#define pb push_back                                                        
#define sz(w) w.size()                                                           
#define int long long                                                       
#define all(w) w.begin(), w.end()                                           
#define BakTR ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);

//const int MOD = 998244353, N = 1e3 + 7 , inf = 1e9 + 7, INF = 2e18, LOG = 20 , mod = 1e6 + 7 ;

const int N = 1e4 + 2;
const int inf = 1e15;
const int mod = 1e9 + 7;
int T = 1 , a[10002] , t[4 * N] ;
 
void build( int v, int tl, int tr )
{
    if( tl == tr )
    {
        t[v] = a[tl];
        return;
    }
    int mid = (tl + tr) / 2;
    build(v + v, tl, mid);
    build(v + v + 1, mid + 1, tr);
    t[v] = t[v + v] + t[v + v + 1];
}
 
void upd( int v, int tl, int tr, int pos, int x )
{
    if( tl == tr )
    {
        t[v] = x;
        return;
    }
    int mid = (tl + tr) / 2;
    if( pos <= mid )
        upd(v + v, tl, mid, pos, x);
    else
        upd(v + v + 1, mid + 1, tr, pos, x);
    t[v] = t[v + v] + t[v + v + 1];
}
 
int get( int v, int tl, int tr, int l, int r )
{
    if( tr < l || r < tl )
        return 0;
    if( l <= tl && tr <= r )
        return t[v];
    int mid = (tl + tr) / 2;
    int x = get(v + v, tl, mid, l, r);
    int y = get(v + v + 1, mid + 1, tr, l, r);
    return x + y;
}
 

void accepted() {
    int n , k;
    cin >> n >> k ;
    for(int i = 1 ; i <= n ; i++) {
        cin >> a[i] ;
    }
    int p[n + 1] ;
    p[1] = a[1] ;
    for(int i = 2 ; i <= n ; i++) {
        p[i] = p[i - 1] + a[i] ;
    }
    int q ;
    cin >> q ;
    while(q -- ) {
        int t ;
        cin >> t ;
        if(t == 1) {
            int x ;
            cin >> x ;
        }
        else {
            int l , r , m ;
            cin >> l >> r >> m ;
            int sum = 0 ;
            for (int ll = l ; ll <= r - m + 1 ; ll++) {
                int rr = ll + m - 1;
                sum += p[rr] - p[ll - 1] ;
            }
            cout << sum << ent ;
        }
    }
}

signed main() {
    BakTR

    //PLS NeverGiveUp

    //freopen("input.txt", "r", stdin);
    //freopen("output.txt", "w", stdout);
    
    int T = 1; 
    //cin >> T;
    while (T--) {
        accepted();
        cout << ent;
    }
}

/**
baktr
65868073990A98C52AFDB7A48F4E8D26
**/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...