| Task: | Lucky prefixes |
| Sender: | TLE |
| Submission time: | 2025-11-08 15:30:26 +0200 |
| Language: | C++ (C++17) |
| Status: | READY |
| Result: | WRONG ANSWER |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.01 s | details |
| #2 | ACCEPTED | 0.43 s | details |
| #3 | WRONG ANSWER | 0.01 s | details |
| #4 | ACCEPTED | 0.19 s | details |
| #5 | TIME LIMIT EXCEEDED | -- | details |
| #6 | TIME LIMIT EXCEEDED | -- | details |
| #7 | TIME LIMIT EXCEEDED | -- | details |
| #8 | TIME LIMIT EXCEEDED | -- | details |
| #9 | TIME LIMIT EXCEEDED | -- | details |
| #10 | WRONG ANSWER | 0.01 s | details |
| #11 | ACCEPTED | 0.20 s | details |
| #12 | TIME LIMIT EXCEEDED | -- | details |
| #13 | TIME LIMIT EXCEEDED | -- | details |
| #14 | TIME LIMIT EXCEEDED | -- | details |
| #15 | TIME LIMIT EXCEEDED | -- | details |
| #16 | TIME LIMIT EXCEEDED | -- | details |
Code
#include <bits/stdc++.h>
using namespace std;
const int MAXN = (2e5 + 1) * 4;
const int N = (2e5 + 1);
long long n, q, t, a, b;
long long f[MAXN];
long long dp[N], lk[N];
void update(long long x, long long l, long long r, long long u, long long v) {
if (l > u or u > r) return;
if (l == r) {
f[x] = v;
return;
}
long long mid = (l + r) / 2;
// cout << l << ' ' << mid << ' ' << r << endl;
update(x * 2, l, mid, u, v);
update(x * 2 + 1, mid + 1, r, u, v);
f[x] = min(f[x * 2], f[x * 2 + 1]);
}
long long find(long long x, long long l, long long r, long long u, long long v) {
if (r < u or l > v or l > r) return 1e9;
if (l >= u and r <= v) return f[x];
long long mid = (l + r) / 2;
return min(find(x * 2, l, mid, u, v), find(x * 2 + 1, mid + 1, r, u, v));
}
void builtTree(long long x, long long l, long long r, long long u, long long v, long long k) {
if (l > v) return;
if (r < u) return;
if (r < l) return;
//cout << l << ' ' << r << endl;
if((u <= l) && (r <= v) and l == r) {
f[x] += k;
//dp[x] += k;
return ;
}
long long mid = (l + r) / 2;
builtTree(2 * x , l, mid, u, v, k);
builtTree(2 * x + 1, mid + 1, r, u, v, k);
f[x] = min(f[x * 2], f[2 * x + 1]);
}
void solve() {
cin >> n >> q;
fill(f, f + MAXN, (long long)1e18);
for(int i = 1; i <= n; i++) cin >> lk[i];
dp[0] = 0;
for(int i = 1; i <= n; i++) {
dp[i] = dp[i - 1] + lk[i];
}
for(int i = 1; i <= n; i++) {
//cout << f[i] << " ";
update(1, 1, n, i, dp[i]);
}
for(int i = 1; i <= q; i++) {
cin >> t >> a >> b;
if (t == 1) {
lk[a] = (b);
for(int i = 1; i <= n; i++) {
dp[i] = dp[i - 1] + lk[i];
}
for(int i = 1; i <= n; i++) {
//cout << f[i] << " ";
update(1, 1, n, i, dp[i]);
}
} else {
//cout << find(1, 1, n, a, b) - dp[a - 1] << " ";
if (find(1, 1, n, a, b) - dp[a - 1] >= 0) cout << "YES" << endl;
else {
cout << "NO" << endl;
}
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
solve();
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: ACCEPTED
| 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 |
|---|
| NO NO NO NO NO ... |
Test 3
Verdict: WRONG ANSWER
| input |
|---|
| 10 10 629447384 -729045992 811583872... |
| correct output |
|---|
| YES NO NO NO NO ... |
| user output |
|---|
| YES NO NO NO NO ... |
Feedback: Incorrect character on line 6 col 1: expected "YES", got "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: TIME LIMIT EXCEEDED
| input |
|---|
| 200000 200000 629447384 -729045992 811583872... |
| correct output |
|---|
| NO NO NO NO NO ... |
| user output |
|---|
| (empty) |
Test 6
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 1000 200000 629447384 -729045992 811583872... |
| correct output |
|---|
| NO NO NO NO NO ... |
| user output |
|---|
| (empty) |
Test 7
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 10000 200000 629447384 -729045992 811583872... |
| correct output |
|---|
| NO NO NO NO NO ... |
| user output |
|---|
| (empty) |
Test 8
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 100000 200000 629447384 -729045992 811583872... |
| correct output |
|---|
| NO NO NO NO NO ... |
| user output |
|---|
| (empty) |
Test 9
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 200000 200000 629447384 -729045992 811583872... |
| correct output |
|---|
| NO NO NO NO NO ... |
| user output |
|---|
| (empty) |
Test 10
Verdict: WRONG ANSWER
| input |
|---|
| 10 10 629447384 -729045992 811583872... |
| correct output |
|---|
| YES NO NO NO NO ... |
| user output |
|---|
| YES NO NO NO NO ... |
Feedback: Incorrect character on line 6 col 1: expected "YES", got "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: TIME LIMIT EXCEEDED
| input |
|---|
| 200000 200000 629447384 -729045992 811583872... |
| correct output |
|---|
| NO NO NO NO NO ... |
| user output |
|---|
| (empty) |
Test 13
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 1000 200000 629447384 -729045992 811583872... |
| correct output |
|---|
| NO NO NO NO NO ... |
| user output |
|---|
| (empty) |
Test 14
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 10000 200000 629447384 -729045992 811583872... |
| correct output |
|---|
| NO NO NO NO NO ... |
| user output |
|---|
| (empty) |
Test 15
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 100000 200000 629447384 -729045992 811583872... |
| correct output |
|---|
| NO NO NO NO NO ... |
| user output |
|---|
| (empty) |
Test 16
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| 200000 200000 629447384 -729045992 811583872... |
| correct output |
|---|
| NO NO NO NO NO ... |
| user output |
|---|
| (empty) |
