Submission #58

Details and source code

Back to submissions
IDTimeUserProblemLangVerdict
58Jan 26, 2026, 07:33 AMadminRSQ QueriescppCE

Source Code

cpp
#pragma GCC optimize("O3")
#pragma GCC target("avx2,tune=native")
#include <bits/stdc++.h>
#include <immintrin.h>
using namespace std;

static inline long long sum_range(const int* a, int lo, int hi) {
#if defined(__AVX2__)
    long long s = 0;
    int i = lo;
    __m256i acc0 = _mm256_setzero_si256();
    __m256i acc1 = _mm256_setzero_si256();
    for (; i + 8 <= hi; i += 8) {
        __m256i v = _mm256_loadu_si256((const __m256i*)(a + i));

        __m128i v0 = _mm256_castsi256_si128(v);
        __m128i v1 = _mm256_extracti128_si256(v, 1);
        __m256i w0 = _mm256_cvtepi32_epi64(v0);
        __m256i w1 = _mm256_cvtepi32_epi64(v1);
		acc0 = _mm256_add_epi64(acc0, w0);
        acc1 = _mm256_add_epi64(acc1, w1);
    }
    alignas(32) long long t0[4], t1[4];
    _mm256_store_si256((__m256i*)t0, acc0);
    _mm256_store_si256((__m256i*)t1, acc1);
    s += t0[0] + t0[1] + t0[2] + t0[3];
    s += t1[0] + t1[1] + t1[2] + t1[3];
    for (; i < hi; ++i) s += a[i];
    return s;
#else
    long long s = 0;
    for (int i = lo; i < hi; ++i) s += a[i];
    return s;
#endif
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;

    vector<int> a(n);
    for (int i = 0; i < n; ++i) cin >> a[i];

    int q;
    cin >> q;

    while (q--) {
        int p, l, r;
        cin >> p >> l >> r;

        if (p == 1) {
            a[l - 1] = r;
        } else {
            int lo = l - 1;
            int hi = r;
            cout << sum_range(a.data(), lo, hi) << '\n';
        }
    }
    return 0;
}