# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
949052 | TAhmed33 | Abracadabra (CEOI22_abracadabra) | C++98 | 769 ms | 51408 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define mid ((l + r) >> 1)
#define tl (node + 1)
#define tr (node + 2 * (mid - l + 1))
const int MAXN = 2e5 + 25;
array <int, 3> v[MAXN << 2];
const int MAXQ = 1e6 + 25;
int n, q;
array <int, 3> queries[MAXQ];
int a[MAXN], nxt[MAXN];
int cnt = 0;
int ans[MAXQ];
int get (array <int, 3> z) {
return lower_bound(v + 1, v + cnt + 1, z) - v;
}
struct SegmentTree {
int tree[MAXN << 3];
void update (int l, int r, int a, int b, int node) {
if (l > a || r < a) return;
if (l == r) {
tree[node] += b;
return;
}
update(l, mid, a, b, tl); update(mid + 1, r, a, b, tr);
tree[node] = tree[tl] + tree[tr];
}
int get (int l, int r, int a, int node) {
if (l == r) return l;
if (tree[tl] >= a) return get(l, mid, a, tl);
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |