제출 #1324866

#제출 시각아이디문제언어결과실행 시간메모리
1324866dianaSterilizing Spray (JOI15_sterilizing)C++20
5 / 100
5094 ms1676 KiB
#include <bits/stdc++.h>
#define ll long long
using namespace std;

const int N = 1e5+5;
ll c[N];
int n, q, k, d;
//class ST
//{
//private:
//    vector<vector<ll>> sum;
//public:
//    ST(int nn)
//    {
//        for(int i=0; i<=4*n; i++) sum[i].assign(d, 0);
//    }
//    void add(int i, int x, int l=1, int r=n, int cur=1)
//    {
//        if(i < l || r < i)  return;
//        if(l == r)
//        {
//            sum[cur][0] = x;
//            for(int i=1; i<d; i++) sum[cur][i] = sum[cur][i-1]/k;
//            return;
//        }
//        int m=((l+r)>>1), r1=(cur<<1), r2=((cur<<1)|1);
//        add(i, x, l, m, r1);
//        add(i, x, m+1, r, r2);
//        for(int i=0; i<d; i++)
//            sum[cur][i] = sum[r1][i] + sum[r2][i];
//    }
//    void
//};

int main()
{
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);

    cin >> n >> q >> k;
    for(int i=1; i<=n; i++)
        cin >> c[i];
    while(q--)
    {
        int s, t, u; cin >> s >> t >> u;
        if(s==1) c[t] = u;
        if(s==2) for(int i=t; i<=u; i++) c[i]/=k;
        if(s==3)
        {
            ll sum = 0;
            for(int i=t; i<=u; i++) sum += c[i];
            cout << sum << '\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...