Submission #73
Details and source code
| ID | Time | User | Problem | Lang | Verdict |
|---|---|---|---|---|---|
| 73 | Jan 29, 2026, 11:23 AM | admin | RSQ Queries | cpp | AC |
Source Code
cpp#pragma GCC optimize("O3")
#include <bits/stdc++.h>
#include <immintrin.h>
using namespace std;
#pragma GCC target("avx2,tune=native")
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;
}