| Task: | Lucky prefixes |
| Sender: | All dO(n³) |
| Submission time: | 2025-11-08 15:26:32 +0200 |
| Language: | C++ (C++20) |
| Status: | READY |
| Result: | TIME LIMIT EXCEEDED |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.00 s | details |
| #2 | TIME LIMIT EXCEEDED | -- | details |
| #3 | ACCEPTED | 0.00 s | details |
| #4 | ACCEPTED | 0.27 s | details |
| #5 | ACCEPTED | 1.19 s | details |
| #6 | ACCEPTED | 0.38 s | details |
| #7 | ACCEPTED | 0.56 s | details |
| #8 | ACCEPTED | 1.01 s | details |
| #9 | ACCEPTED | 1.18 s | details |
| #10 | ACCEPTED | 0.00 s | details |
| #11 | ACCEPTED | 0.27 s | details |
| #12 | ACCEPTED | 1.19 s | details |
| #13 | ACCEPTED | 0.38 s | details |
| #14 | ACCEPTED | 0.56 s | details |
| #15 | ACCEPTED | 1.00 s | details |
| #16 | ACCEPTED | 1.19 s | details |
Compiler report
input/code.cpp: In function 'int main()':
input/code.cpp:57:10: warning: unused variable 'a' [-Wunused-variable]
57 | auto a = st.query(2,3);
| ^Code
#include <bits/stdc++.h>
using namespace std;
template<class T, class Op>
struct SegTree {
int n;
T ID;
Op op;
vector<T> st;
SegTree(int n=0, T ID=T(), Op op=Op()) {init(n, ID, op); }
void init(int n_, T ID_, Op op_=Op()) {
n = n_; ID = ID_; op= op_;
st.assign(2*n, ID);
}
void build(const vector<T> &a) {
n = (int)a.size();
st.assign(2*n, ID);
for (int i = 0; i < n; i++) st[n+i] = a[i];
for(int i = n-1; i > 0; i--) st[i] = op(st[i<<1], st[i<<1|1]);
}
void set(int i, T v) {
for(st[i += n] = v; i > 1; i >>= 1)
st[i>>1] = op(st[i], st[i^1]);
}
T query(int l , int r) const {
T resL = ID, resR = ID;
for(l += n, r += n+1; l <r; l >>= 1, r >>= 1) {
if (l & 1) resL = op(resL, st[l++]);
if (r & 1) resR = op(st[--r], resR);
}
return op(resL, resR);
}
};
const long long ID = 0;
struct Op {
long long operator() (long long a, long long b ) const {
return a + b;
}
};
int main () {
//freopen("linput.txt", "r", stdin);
int n, q;
cin >> n >> q;
auto st = SegTree(n, ID, Op());
for(int i =0; i <n; i++) {
long long d; cin >> d;
st.set(i, d);
}
auto a = st.query(2,3);
while(q--) {
int i, j, k;
cin >> i >> j >> k;
if(i == 1) {
st.set(--j, k);
}
else {
--j; --k;
bool ok = true;
for (int p = j; p <=k; p++) {
if (st.query(j, p) < 0) {
cout << "NO\n";
ok = false;
break;
}
}
if (ok) cout << "YES\n";
}
}
return 0;
}Test details
Test 1
Verdict: ACCEPTED
| input |
|---|
| 6 4 3 -2 1 5 6 1 2 1 3 2 2 3 1 3 -2 ... |
| correct output |
|---|
| YES NO NO |
| user output |
|---|
| YES NO NO |
Test 2
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 200000 200000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| NO NO NO NO NO ... |
| user output |
|---|
| (empty) |
Test 3
Verdict: ACCEPTED
| input |
|---|
| 10 10 629447384 -729045992 811583872... |
| correct output |
|---|
| YES NO NO NO NO ... |
| user output |
|---|
| YES NO NO NO NO ... |
Test 4
Verdict: ACCEPTED
| input |
|---|
| 1 200000 629447384 1 1 670017180 1 1 826751744 1 1 -804919168 ... |
| correct output |
|---|
| NO NO NO YES YES ... |
| user output |
|---|
| NO NO NO YES YES ... |
Test 5
Verdict: ACCEPTED
| input |
|---|
| 200000 200000 629447384 -729045992 811583872... |
| correct output |
|---|
| NO NO NO NO NO ... |
| user output |
|---|
| NO NO NO NO NO ... |
Test 6
Verdict: ACCEPTED
| input |
|---|
| 1000 200000 629447384 -729045992 811583872... |
| correct output |
|---|
| NO NO NO NO NO ... |
| user output |
|---|
| NO NO NO NO NO ... |
Test 7
Verdict: ACCEPTED
| input |
|---|
| 10000 200000 629447384 -729045992 811583872... |
| correct output |
|---|
| NO NO NO NO NO ... |
| user output |
|---|
| NO NO NO NO NO ... |
Test 8
Verdict: ACCEPTED
| input |
|---|
| 100000 200000 629447384 -729045992 811583872... |
| correct output |
|---|
| NO NO NO NO NO ... |
| user output |
|---|
| NO NO NO NO NO ... |
Test 9
Verdict: ACCEPTED
| input |
|---|
| 200000 200000 629447384 -729045992 811583872... |
| correct output |
|---|
| NO NO NO NO NO ... |
| user output |
|---|
| NO NO NO NO NO ... |
Test 10
Verdict: ACCEPTED
| input |
|---|
| 10 10 629447384 -729045992 811583872... |
| correct output |
|---|
| YES NO NO NO NO ... |
| user output |
|---|
| YES NO NO NO NO ... |
Test 11
Verdict: ACCEPTED
| input |
|---|
| 1 200000 629447384 1 1 670017180 1 1 826751744 1 1 -804919168 ... |
| correct output |
|---|
| NO NO NO YES YES ... |
| user output |
|---|
| NO NO NO YES YES ... |
Test 12
Verdict: ACCEPTED
| input |
|---|
| 200000 200000 629447384 -729045992 811583872... |
| correct output |
|---|
| NO NO NO NO NO ... |
| user output |
|---|
| NO NO NO NO NO ... |
Test 13
Verdict: ACCEPTED
| input |
|---|
| 1000 200000 629447384 -729045992 811583872... |
| correct output |
|---|
| NO NO NO NO NO ... |
| user output |
|---|
| NO NO NO NO NO ... |
Test 14
Verdict: ACCEPTED
| input |
|---|
| 10000 200000 629447384 -729045992 811583872... |
| correct output |
|---|
| NO NO NO NO NO ... |
| user output |
|---|
| NO NO NO NO NO ... |
Test 15
Verdict: ACCEPTED
| input |
|---|
| 100000 200000 629447384 -729045992 811583872... |
| correct output |
|---|
| NO NO NO NO NO ... |
| user output |
|---|
| NO NO NO NO NO ... |
Test 16
Verdict: ACCEPTED
| input |
|---|
| 200000 200000 629447384 -729045992 811583872... |
| correct output |
|---|
| NO NO NO NO NO ... |
| user output |
|---|
| NO NO NO NO NO ... |
