#include <iostream>
#include <iomanip>
#include <fstream>
#include <vector>
#include <array>
#include <algorithm>
#include <utility>
#include <map>
#include <queue>
#include <set>
#include <cmath>
#include <cstdio>
#include <cstring>
#define ll long long
#define ld long double
#define eps 1e-8
#define MOD 1000000007
#define INF 0x3f3f3f3f
#define INFLL 0x3f3f3f3f3f3f3f3f
// change if necessary
#define MAXN 250010
using namespace std;
template<typename T>
T &ckmin(T &a, T b) {
return a = min(a, b);
}
struct BIT {
int n;
vector<ll> bit;
BIT(int n) : n(n), bit(n) {}
void upd(int x, ll q) {
x++;
while (x <= n) {
bit[x - 1] += q;
x += x & -x;
}
}
ll qry(int x) {
ll res = 0;
while (x > 0) {
res += bit[x - 1];
x -= x & -x;
}
return res;
}
int bsearch(ll r) {
int cur = 0;
ll sum = 0;
for (int i = (1 << 20); i > 0; i /= 2) {
if (cur + i <= n && sum + bit[cur + i - 1] <= r) {
cur += i;
sum += bit[cur - 1];
}
}
return cur;
}
};
BIT tot_add(0);
// represents max(a, x + b)
struct Func {
ll a, b;
Func() : Func(0, 0) {}
Func(ll a, ll b) : a(a), b(b) {}
ll operator()() { return max(a, b); }
Func operator+(const Func &f2) const {
return Func(max(a, b + f2.a), b + f2.b);
}
};
template<typename Node>
struct segtree {
int n;
vector<Node> lazy;
segtree(int n) : n(n), lazy(4 * n) {}
void push(int v, int l, int r) {
if (l + 1 != r) {
lazy[2 * v] = lazy[v] + lazy[2 * v];
lazy[2 * v + 1] = lazy[v] + lazy[2 * v + 1];
lazy[v] = Node();
}
}
void upd(int x, int y, Node q) { upd(1, 0, n, x, y, q); }
void upd(int v, int l, int r, int x, int y, Node q) {
push(v, l, r);
if (r <= x || l >= y) return;
if (x <= l && r <= y) {
lazy[v] = q + lazy[v];
push(v, l, r);
} else {
int m = (l + r) / 2;
upd(2 * v, l, m, x, y, q);
upd(2 * v + 1, m, r, x, y, q);
}
}
ll qry(int a) { return qry(1, 0, n, a)(); }
Node qry(int v, int l, int r, int a) {
push(v, l, r);
if (l + 1 == r) {
return lazy[v];
} else {
int m = (l + r) / 2;
if (a < m) {
return qry(2 * v, l, m, a);
} else {
return qry(2 * v + 1, m, r, a);
}
}
}
};
int n, m, q;
array<ll, 5> qry[MAXN];
vector<pair<ll, int>> in_q;
vector<int> add[MAXN]; // elements to add to the queue
vector<int> rem[MAXN]; // elements to remove from the queue
vector<pair<ll, int>> to_ans[MAXN];
vector<ll> ans;
int main() {
cin.tie(0)->sync_with_stdio(0);
cin >> n >> m >> q;
for (int i = 0; i < q; i++) {
qry[i] = {0, 0, 0, 0, 0};
cin >> qry[i][0];
switch (qry[i][0]) {
case 1:
cin >> qry[i][1] >> qry[i][2] >> qry[i][3] >> qry[i][4];
break;
case 2:
cin >> qry[i][1] >> qry[i][2] >> qry[i][3];
break;
case 3:
cin >> qry[i][1] >> qry[i][2];
break;
}
}
segtree<Func> st(n);
tot_add = BIT(n);
for (int i = 0; i < q; i++) {
auto qq = qry[i];
if (qq[0] == 1) {
auto [t, l, r, c, k] = qq;
l--;
add[l].push_back(in_q.size());
rem[r].push_back(in_q.size());
in_q.push_back({k, c});
st.upd(l, r, Func(k, k));
tot_add.upd(l, k);
tot_add.upd(r, -k);
} else if (qq[0] == 2) {
auto [t, l, r, k, _] = qq;
l--;
st.upd(l, r, Func(0, -k));
} else {
auto [t, a, b, _, __] = qq;
a--; b--;
int num_q = st.qry(a);
int p_idx = num_q <= b ? -1 : tot_add.qry(a + 1) - num_q + b;
to_ans[a].push_back({p_idx, ans.size()});
ans.emplace_back();
}
}
int sz = in_q.size();
BIT bit(sz);
for (int i = 0; i < n; i++) {
for (int x : add[i]) {
bit.upd(x, in_q[x].first);
}
for (int x : rem[i]) {
bit.upd(x, -in_q[x].first);
}
for (auto [loc, idx] : to_ans[i]) {
if (loc == -1) {
ans[idx] = 0;
} else {
int pos = bit.bsearch(loc);
ans[idx] = in_q[pos].second;
}
}
}
for (int x : ans) {
cout << x << '\n';
}
return 0;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
10 ms |
18124 KB |
Output is correct |
2 |
Correct |
11 ms |
18236 KB |
Output is correct |
3 |
Correct |
11 ms |
18116 KB |
Output is correct |
4 |
Correct |
11 ms |
18256 KB |
Output is correct |
5 |
Correct |
10 ms |
17996 KB |
Output is correct |
6 |
Correct |
10 ms |
18048 KB |
Output is correct |
7 |
Correct |
11 ms |
18204 KB |
Output is correct |
8 |
Correct |
11 ms |
18124 KB |
Output is correct |
9 |
Correct |
11 ms |
18124 KB |
Output is correct |
10 |
Correct |
11 ms |
18124 KB |
Output is correct |
11 |
Correct |
12 ms |
18124 KB |
Output is correct |
12 |
Correct |
11 ms |
18216 KB |
Output is correct |
13 |
Correct |
10 ms |
18120 KB |
Output is correct |
14 |
Correct |
11 ms |
18160 KB |
Output is correct |
15 |
Correct |
11 ms |
18124 KB |
Output is correct |
16 |
Correct |
11 ms |
18224 KB |
Output is correct |
17 |
Correct |
12 ms |
18124 KB |
Output is correct |
18 |
Correct |
11 ms |
18236 KB |
Output is correct |
19 |
Correct |
11 ms |
18224 KB |
Output is correct |
20 |
Correct |
12 ms |
18264 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
10 ms |
18124 KB |
Output is correct |
2 |
Correct |
11 ms |
18236 KB |
Output is correct |
3 |
Correct |
11 ms |
18116 KB |
Output is correct |
4 |
Correct |
11 ms |
18256 KB |
Output is correct |
5 |
Correct |
10 ms |
17996 KB |
Output is correct |
6 |
Correct |
10 ms |
18048 KB |
Output is correct |
7 |
Correct |
11 ms |
18204 KB |
Output is correct |
8 |
Correct |
11 ms |
18124 KB |
Output is correct |
9 |
Correct |
11 ms |
18124 KB |
Output is correct |
10 |
Correct |
11 ms |
18124 KB |
Output is correct |
11 |
Correct |
12 ms |
18124 KB |
Output is correct |
12 |
Correct |
11 ms |
18216 KB |
Output is correct |
13 |
Correct |
10 ms |
18120 KB |
Output is correct |
14 |
Correct |
11 ms |
18160 KB |
Output is correct |
15 |
Correct |
11 ms |
18124 KB |
Output is correct |
16 |
Correct |
11 ms |
18224 KB |
Output is correct |
17 |
Correct |
12 ms |
18124 KB |
Output is correct |
18 |
Correct |
11 ms |
18236 KB |
Output is correct |
19 |
Correct |
11 ms |
18224 KB |
Output is correct |
20 |
Correct |
12 ms |
18264 KB |
Output is correct |
21 |
Incorrect |
11 ms |
18228 KB |
Output isn't correct |
22 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
65 ms |
27504 KB |
Output is correct |
2 |
Correct |
71 ms |
28040 KB |
Output is correct |
3 |
Correct |
68 ms |
27456 KB |
Output is correct |
4 |
Correct |
67 ms |
27448 KB |
Output is correct |
5 |
Correct |
75 ms |
28000 KB |
Output is correct |
6 |
Correct |
72 ms |
28000 KB |
Output is correct |
7 |
Correct |
26 ms |
21568 KB |
Output is correct |
8 |
Correct |
27 ms |
21768 KB |
Output is correct |
9 |
Correct |
71 ms |
27624 KB |
Output is correct |
10 |
Correct |
68 ms |
27500 KB |
Output is correct |
11 |
Correct |
68 ms |
27496 KB |
Output is correct |
12 |
Correct |
68 ms |
27452 KB |
Output is correct |
13 |
Correct |
64 ms |
26172 KB |
Output is correct |
14 |
Correct |
70 ms |
28288 KB |
Output is correct |
15 |
Correct |
71 ms |
27064 KB |
Output is correct |
16 |
Correct |
79 ms |
28856 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
307 ms |
51276 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
10 ms |
18124 KB |
Output is correct |
2 |
Correct |
11 ms |
18236 KB |
Output is correct |
3 |
Correct |
11 ms |
18116 KB |
Output is correct |
4 |
Correct |
11 ms |
18256 KB |
Output is correct |
5 |
Correct |
10 ms |
17996 KB |
Output is correct |
6 |
Correct |
10 ms |
18048 KB |
Output is correct |
7 |
Correct |
11 ms |
18204 KB |
Output is correct |
8 |
Correct |
11 ms |
18124 KB |
Output is correct |
9 |
Correct |
11 ms |
18124 KB |
Output is correct |
10 |
Correct |
11 ms |
18124 KB |
Output is correct |
11 |
Correct |
12 ms |
18124 KB |
Output is correct |
12 |
Correct |
11 ms |
18216 KB |
Output is correct |
13 |
Correct |
10 ms |
18120 KB |
Output is correct |
14 |
Correct |
11 ms |
18160 KB |
Output is correct |
15 |
Correct |
11 ms |
18124 KB |
Output is correct |
16 |
Correct |
11 ms |
18224 KB |
Output is correct |
17 |
Correct |
12 ms |
18124 KB |
Output is correct |
18 |
Correct |
11 ms |
18236 KB |
Output is correct |
19 |
Correct |
11 ms |
18224 KB |
Output is correct |
20 |
Correct |
12 ms |
18264 KB |
Output is correct |
21 |
Correct |
65 ms |
27504 KB |
Output is correct |
22 |
Correct |
71 ms |
28040 KB |
Output is correct |
23 |
Correct |
68 ms |
27456 KB |
Output is correct |
24 |
Correct |
67 ms |
27448 KB |
Output is correct |
25 |
Correct |
75 ms |
28000 KB |
Output is correct |
26 |
Correct |
72 ms |
28000 KB |
Output is correct |
27 |
Correct |
26 ms |
21568 KB |
Output is correct |
28 |
Correct |
27 ms |
21768 KB |
Output is correct |
29 |
Correct |
71 ms |
27624 KB |
Output is correct |
30 |
Correct |
68 ms |
27500 KB |
Output is correct |
31 |
Correct |
68 ms |
27496 KB |
Output is correct |
32 |
Correct |
68 ms |
27452 KB |
Output is correct |
33 |
Correct |
64 ms |
26172 KB |
Output is correct |
34 |
Correct |
70 ms |
28288 KB |
Output is correct |
35 |
Correct |
71 ms |
27064 KB |
Output is correct |
36 |
Correct |
79 ms |
28856 KB |
Output is correct |
37 |
Correct |
63 ms |
26560 KB |
Output is correct |
38 |
Correct |
62 ms |
26352 KB |
Output is correct |
39 |
Correct |
24 ms |
21188 KB |
Output is correct |
40 |
Correct |
27 ms |
21576 KB |
Output is correct |
41 |
Correct |
71 ms |
27316 KB |
Output is correct |
42 |
Correct |
75 ms |
27392 KB |
Output is correct |
43 |
Correct |
84 ms |
27324 KB |
Output is correct |
44 |
Correct |
76 ms |
27464 KB |
Output is correct |
45 |
Correct |
74 ms |
27364 KB |
Output is correct |
46 |
Correct |
72 ms |
27392 KB |
Output is correct |
47 |
Correct |
37 ms |
26648 KB |
Output is correct |
48 |
Correct |
62 ms |
26672 KB |
Output is correct |
49 |
Correct |
54 ms |
24592 KB |
Output is correct |
50 |
Correct |
73 ms |
26568 KB |
Output is correct |
51 |
Correct |
79 ms |
27376 KB |
Output is correct |
52 |
Correct |
76 ms |
27332 KB |
Output is correct |
53 |
Correct |
68 ms |
26988 KB |
Output is correct |
54 |
Correct |
76 ms |
28800 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
70 ms |
27704 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
10 ms |
18124 KB |
Output is correct |
2 |
Correct |
11 ms |
18236 KB |
Output is correct |
3 |
Correct |
11 ms |
18116 KB |
Output is correct |
4 |
Correct |
11 ms |
18256 KB |
Output is correct |
5 |
Correct |
10 ms |
17996 KB |
Output is correct |
6 |
Correct |
10 ms |
18048 KB |
Output is correct |
7 |
Correct |
11 ms |
18204 KB |
Output is correct |
8 |
Correct |
11 ms |
18124 KB |
Output is correct |
9 |
Correct |
11 ms |
18124 KB |
Output is correct |
10 |
Correct |
11 ms |
18124 KB |
Output is correct |
11 |
Correct |
12 ms |
18124 KB |
Output is correct |
12 |
Correct |
11 ms |
18216 KB |
Output is correct |
13 |
Correct |
10 ms |
18120 KB |
Output is correct |
14 |
Correct |
11 ms |
18160 KB |
Output is correct |
15 |
Correct |
11 ms |
18124 KB |
Output is correct |
16 |
Correct |
11 ms |
18224 KB |
Output is correct |
17 |
Correct |
12 ms |
18124 KB |
Output is correct |
18 |
Correct |
11 ms |
18236 KB |
Output is correct |
19 |
Correct |
11 ms |
18224 KB |
Output is correct |
20 |
Correct |
12 ms |
18264 KB |
Output is correct |
21 |
Incorrect |
11 ms |
18228 KB |
Output isn't correct |
22 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
10 ms |
18124 KB |
Output is correct |
2 |
Correct |
11 ms |
18236 KB |
Output is correct |
3 |
Correct |
11 ms |
18116 KB |
Output is correct |
4 |
Correct |
11 ms |
18256 KB |
Output is correct |
5 |
Correct |
10 ms |
17996 KB |
Output is correct |
6 |
Correct |
10 ms |
18048 KB |
Output is correct |
7 |
Correct |
11 ms |
18204 KB |
Output is correct |
8 |
Correct |
11 ms |
18124 KB |
Output is correct |
9 |
Correct |
11 ms |
18124 KB |
Output is correct |
10 |
Correct |
11 ms |
18124 KB |
Output is correct |
11 |
Correct |
12 ms |
18124 KB |
Output is correct |
12 |
Correct |
11 ms |
18216 KB |
Output is correct |
13 |
Correct |
10 ms |
18120 KB |
Output is correct |
14 |
Correct |
11 ms |
18160 KB |
Output is correct |
15 |
Correct |
11 ms |
18124 KB |
Output is correct |
16 |
Correct |
11 ms |
18224 KB |
Output is correct |
17 |
Correct |
12 ms |
18124 KB |
Output is correct |
18 |
Correct |
11 ms |
18236 KB |
Output is correct |
19 |
Correct |
11 ms |
18224 KB |
Output is correct |
20 |
Correct |
12 ms |
18264 KB |
Output is correct |
21 |
Incorrect |
11 ms |
18228 KB |
Output isn't correct |
22 |
Halted |
0 ms |
0 KB |
- |