제출 #1324661

#제출 시각아이디문제언어결과실행 시간메모리
1324661Valters07Sterilizing Spray (JOI15_sterilizing)C++20
10 / 100
45 ms3380 KiB
#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,popcnt,lzcnt")
#define fio ios_base::sync_with_stdio(0);cin.tie(0);
#define ll long long
#define ld long double
#define en exit(0);
#define pb push_back
#define fi first
#define se second
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
const int N = 1e5 + 5;
ll segt[4 * N];
int c[N], n;
void upd(int p, int v, int l = 1, int r = n, int pos = 1)
{
    if(l == r)
        segt[pos] = v;
    else
    {
        int mid = (l + r) / 2;
        if(p <= mid)
            upd(p, v, l, mid, pos * 2);
        else
            upd(p, v, mid + 1, r, pos * 2 + 1);
        segt[pos] = segt[pos * 2] + segt[pos * 2 + 1];
    }
}
ll getsum(int lb, int rb, int l = 1, int r = n, int pos = 1)
{
    if(rb < l || r < lb)
        return 0;
    if(lb <= l && r <= rb)
        return segt[pos];
    int mid = (l + r) / 2;
    return getsum(lb, rb, l, mid, pos * 2) + getsum(lb, rb, mid + 1, r, pos * 2 + 1);
}
int main()
{
    fio
//    ifstream cin("in.in");
    int q, k;
    cin >> n >> q >> k;
    for(int i = 1;i <= n;i++)
    {
        cin >> c[i];
        upd(i, c[i]);
    }
    while(q--)
    {
        int t;
        cin >> t;
        if(t == 1)
        {
            int p, v;
            cin >> p >> v;
            upd(p, v);
        }
        else if(t == 2)
        {
            int l, r;
            cin >> l >> r;
            // nothing happens, because k = 1
        }
        else
        {
            int l, r;
            cin >> l >> r;
            cout << getsum(l, r) << "\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...