| 16757 | 2025-05-12 10:30:05 | szil | Siklóernyőzés | cpp17 | Hibás válasz 33/100 | 2.095s | 23864 KiB |
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int MAXN = 200'001;
int K;
struct segtree1 {
vector<pair<int, int>> tree;
int n;
segtree1() {}
segtree1(int n) : n(n) {
tree.resize(2*n);
}
void upd(int u, int k) {
tree[u + n] = {k, u};
u += n;
for (u /= 2; u >= 1; u /= 2) {
tree[u] = max(tree[2*u], tree[2*u+1]);
}
}
int qry(int l, int r) {
l += n; r += n;
pair<int, int> res = {0, 0};
while (l <= r) {
if (l % 2 == 1) res = max(res, tree[l++]);
if (r % 2 == 0) res = max(res, tree[r--]);
l /= 2; r /= 2;
}
return res.second;
}
};
struct segtree2 {
struct node {
int mx = 0, lazy = 0;
void apply(int v) {
mx += v;
lazy += v;
}
};
int n, h;
vector<node> tree;
segtree2() {}
segtree2(int _n) : n(_n) {
h = sizeof(int) * 8 - __builtin_clz(n);
tree.resize(2 * n);
}
void apply(int p, int v) {
tree[p].apply(v);
}
void build(int p) {
while (p > 1) {
p >>= 1;
tree[p].mx = max(tree[p<<1].mx, tree[p<<1|1].mx) + tree[p].lazy;
}
}
void push(int p) {
for (int s = h; s > 0; --s) {
int i = p >> s;
if (tree[i].lazy) {
tree[i<<1].apply(tree[i].lazy);
tree[i<<1|1].apply(tree[i].lazy);
tree[i].lazy = 0;
}
}
}
void upd_add(int a, int b, int c, int l, int r, int v) {
if (l > r) return;
int l0 = l += n, r0 = ++r += n;
for (; l < r; l >>= 1, r >>= 1) {
if (l & 1) apply(l++, v);
if (r & 1) apply(--r, v);
}
build(l0);
build(r0 - 1);
}
int qry(int a, int b, int c, int l, int r) {
if (l > r) return 0;
int res = 0;
int l0 = l += n, r0 = ++r += n;
push(l0);
push(r0 - 1);
for (; l < r; l >>= 1, r >>= 1) {
if (l & 1) res = max(res, tree[l++].mx);
if (r & 1) res = max(res, tree[--r].mx);
}
return res;
}
};
int a[MAXN], n, q, il[MAXN], ir[MAXN], ans[MAXN], depth[MAXN], max_depth = 0;
segtree1 st_max;
segtree2 st_depth;
void calc_depth(int l, int r, int d = 0) {
if (l > r) return;
int u = st_max.qry(l, r);
depth[u] = d;
max_depth = max(max_depth, d);
il[u] = l;
ir[u] = r;
calc_depth(l, u-1, d+1);
calc_depth(u+1, r, d+1);
}
void rem(int idx) {
st_depth.upd_add(1, 1, n, il[idx], ir[idx], -1);
}
void add(int idx) {
st_depth.upd_add(1, 1, n, il[idx], ir[idx], 1);
}
void solve() {
cin >> n >> q;
K = sqrt(n);
for (int i = 1; i <= n; i++) cin >> a[i];
st_max = segtree1(n+1);
st_depth = segtree2(n+1);
for (int i = 1; i <= n; i++) st_max.upd(i, a[i]);
calc_depth(1, n);
bool is_subtask7 = max_depth <= 70;
vector<array<int, 3>> qrys(q);
auto upd = [&](auto &&self, int l, int r, bool go_right, int sgn, int u = -1) -> void {
if (l > r) return;
if (u == -1) u = st_max.qry(l, r);
int nl = l, nr = r;
if (go_right) nl = u+1;
else nr = u-1;
int v = st_max.qry(nl, nr);
int outside = depth[v] - depth[u] - 1;
st_depth.upd_add(1, 1, n, nl, nr, outside * sgn);
self(self, nl, nr, go_right, sgn, v);
};
for (int i = 0; i < q; i++) {
cin >> qrys[i][0] >> qrys[i][1];
qrys[i][2] = i+1;
}
if (is_subtask7) {
vector<vector<pair<int, int>>> mp(n+1);
for (int i = 0; i < q; i++) {
mp[qrys[i][1]].emplace_back(qrys[i][0], qrys[i][2]);
}
for (int i = 1; i <= n; i++) {
st_depth.upd_add(1, 1, n, il[i], ir[i], 1);
for (auto [l, idx] : mp[i]) {
upd(upd, l, i, 0, -1);
ans[idx] = st_depth.qry(1, 1, n, l, i)-1;
upd(upd, l, i, 0, 1);
}
}
} else {
sort(qrys.begin(), qrys.end(), [&](auto a, auto b){
if (a[0] / K == b[0] / K) return a[1] > b[1];
return a[0] < b[0];
});
int l = 1, r = 0;
for (auto [nl, nr, idx] : qrys) {
while (r < nr) add(++r);
while (l > nl) add(--l);
while (r > nr) rem(r--);
while (l < nl) rem(l++);
ans[idx] = st_depth.qry(1, 1, n, l, r)-1;
}
}
for (int i = 1; i <= q; i++) {
cout << ans[i] << "\n";
}
}
int main() {
ios::sync_with_stdio(0); cin.tie(0);
int t = 1;
// cin >> t;
while (t--) solve();
return 0;
}| Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
|---|---|---|---|---|---|---|---|
| subtask1 | 0/0 | ||||||
| 1 | Elfogadva | 1ms | 508 KiB | ||||
| 2 | Hibás válasz | 1.565s | 21600 KiB | ||||
| subtask2 | 0/5 | ||||||
| 3 | Időlimit túllépés | 2.081s | 22336 KiB | ||||
| 4 | Időlimit túllépés | 2.081s | 12904 KiB | ||||
| 5 | Időlimit túllépés | 2.082s | 14132 KiB | ||||
| 6 | Időlimit túllépés | 2.082s | 22068 KiB | ||||
| 7 | Időlimit túllépés | 2.085s | 18740 KiB | ||||
| 8 | Elfogadva | 263ms | 20548 KiB | ||||
| subtask3 | 13/13 | ||||||
| 9 | Elfogadva | 2ms | 564 KiB | ||||
| 10 | Elfogadva | 2ms | 564 KiB | ||||
| 11 | Elfogadva | 2ms | 748 KiB | ||||
| 12 | Elfogadva | 2ms | 564 KiB | ||||
| 13 | Elfogadva | 2ms | 564 KiB | ||||
| 14 | Elfogadva | 2ms | 660 KiB | ||||
| 15 | Elfogadva | 2ms | 540 KiB | ||||
| 16 | Elfogadva | 2ms | 388 KiB | ||||
| 17 | Elfogadva | 2ms | 564 KiB | ||||
| subtask4 | 10/10 | ||||||
| 18 | Elfogadva | 2ms | 564 KiB | ||||
| 19 | Elfogadva | 2ms | 564 KiB | ||||
| 20 | Elfogadva | 2ms | 748 KiB | ||||
| 21 | Elfogadva | 2ms | 564 KiB | ||||
| 22 | Elfogadva | 2ms | 564 KiB | ||||
| 23 | Elfogadva | 2ms | 660 KiB | ||||
| 24 | Elfogadva | 2ms | 540 KiB | ||||
| 25 | Elfogadva | 2ms | 388 KiB | ||||
| 26 | Elfogadva | 2ms | 564 KiB | ||||
| 27 | Elfogadva | 85ms | 14404 KiB | ||||
| 28 | Elfogadva | 82ms | 14408 KiB | ||||
| 29 | Elfogadva | 82ms | 14504 KiB | ||||
| 30 | Elfogadva | 85ms | 14524 KiB | ||||
| 31 | Elfogadva | 82ms | 14388 KiB | ||||
| 32 | Elfogadva | 85ms | 14388 KiB | ||||
| 33 | Elfogadva | 114ms | 12004 KiB | ||||
| 34 | Elfogadva | 115ms | 12088 KiB | ||||
| 35 | Elfogadva | 112ms | 10600 KiB | ||||
| 36 | Elfogadva | 119ms | 17216 KiB | ||||
| subtask5 | 0/15 | ||||||
| 37 | Elfogadva | 2ms | 564 KiB | ||||
| 38 | Elfogadva | 2ms | 564 KiB | ||||
| 39 | Elfogadva | 2ms | 748 KiB | ||||
| 40 | Elfogadva | 2ms | 564 KiB | ||||
| 41 | Elfogadva | 2ms | 564 KiB | ||||
| 42 | Elfogadva | 2ms | 660 KiB | ||||
| 43 | Elfogadva | 2ms | 540 KiB | ||||
| 44 | Elfogadva | 2ms | 388 KiB | ||||
| 45 | Elfogadva | 2ms | 564 KiB | ||||
| 46 | Elfogadva | 467ms | 4652 KiB | ||||
| 47 | Elfogadva | 495ms | 4404 KiB | ||||
| 48 | Elfogadva | 354ms | 4404 KiB | ||||
| 49 | Elfogadva | 352ms | 4540 KiB | ||||
| 50 | Hibás válasz | 657ms | 6196 KiB | ||||
| 51 | Hibás válasz | 698ms | 6476 KiB | ||||
| 52 | Hibás válasz | 647ms | 6452 KiB | ||||
| 53 | Hibás válasz | 685ms | 6280 KiB | ||||
| 54 | Elfogadva | 474ms | 4404 KiB | ||||
| 55 | Elfogadva | 460ms | 4404 KiB | ||||
| 56 | Elfogadva | 453ms | 4512 KiB | ||||
| 57 | Elfogadva | 442ms | 4400 KiB | ||||
| subtask6 | 10/10 | ||||||
| 58 | Elfogadva | 1.243s | 23720 KiB | ||||
| 59 | Elfogadva | 1.212s | 23732 KiB | ||||
| 60 | Elfogadva | 1.225s | 23776 KiB | ||||
| 61 | Elfogadva | 1.023s | 23844 KiB | ||||
| 62 | Elfogadva | 718ms | 23812 KiB | ||||
| 63 | Elfogadva | 1.062s | 23744 KiB | ||||
| 64 | Elfogadva | 257ms | 16380 KiB | ||||
| 65 | Elfogadva | 263ms | 15924 KiB | ||||
| 66 | Elfogadva | 261ms | 14644 KiB | ||||
| 67 | Elfogadva | 254ms | 16964 KiB | ||||
| subtask7 | 0/11 | ||||||
| 68 | Elfogadva | 2ms | 564 KiB | ||||
| 69 | Elfogadva | 2ms | 564 KiB | ||||
| 70 | Elfogadva | 2ms | 748 KiB | ||||
| 71 | Elfogadva | 2ms | 564 KiB | ||||
| 72 | Elfogadva | 2ms | 564 KiB | ||||
| 73 | Elfogadva | 2ms | 660 KiB | ||||
| 74 | Elfogadva | 2ms | 540 KiB | ||||
| 75 | Elfogadva | 2ms | 388 KiB | ||||
| 76 | Elfogadva | 2ms | 564 KiB | ||||
| 77 | Elfogadva | 85ms | 14404 KiB | ||||
| 78 | Elfogadva | 82ms | 14408 KiB | ||||
| 79 | Elfogadva | 82ms | 14504 KiB | ||||
| 80 | Elfogadva | 85ms | 14524 KiB | ||||
| 81 | Elfogadva | 82ms | 14388 KiB | ||||
| 82 | Elfogadva | 85ms | 14388 KiB | ||||
| 83 | Elfogadva | 114ms | 12004 KiB | ||||
| 84 | Elfogadva | 115ms | 12088 KiB | ||||
| 85 | Elfogadva | 112ms | 10600 KiB | ||||
| 86 | Elfogadva | 119ms | 17216 KiB | ||||
| 87 | Elfogadva | 1.243s | 23720 KiB | ||||
| 88 | Elfogadva | 1.212s | 23732 KiB | ||||
| 89 | Elfogadva | 1.225s | 23776 KiB | ||||
| 90 | Elfogadva | 1.023s | 23844 KiB | ||||
| 91 | Elfogadva | 718ms | 23812 KiB | ||||
| 92 | Elfogadva | 1.062s | 23744 KiB | ||||
| 93 | Elfogadva | 257ms | 16380 KiB | ||||
| 94 | Elfogadva | 263ms | 15924 KiB | ||||
| 95 | Elfogadva | 261ms | 14644 KiB | ||||
| 96 | Elfogadva | 254ms | 16964 KiB | ||||
| 97 | Elfogadva | 1.185s | 21144 KiB | ||||
| 98 | Hibás válasz | 1.233s | 21408 KiB | ||||
| 99 | Hibás válasz | 1.161s | 21156 KiB | ||||
| 100 | Hibás válasz | 1.129s | 21416 KiB | ||||
| 101 | Elfogadva | 1.264s | 21360 KiB | ||||
| 102 | Hibás válasz | 1.189s | 21156 KiB | ||||
| 103 | Elfogadva | 344ms | 16332 KiB | ||||
| 104 | Elfogadva | 352ms | 15168 KiB | ||||
| 105 | Elfogadva | 349ms | 14640 KiB | ||||
| 106 | Elfogadva | 340ms | 18996 KiB | ||||
| subtask8 | 0/21 | ||||||
| 107 | Elfogadva | 1ms | 316 KiB | ||||
| 108 | Hibás válasz | 1.575s | 21556 KiB | ||||
| 109 | Hibás válasz | 1.876s | 21568 KiB | ||||
| 110 | Hibás válasz | 1.646s | 21556 KiB | ||||
| 111 | Hibás válasz | 1.671s | 21556 KiB | ||||
| 112 | Hibás válasz | 1.761s | 21556 KiB | ||||
| 113 | Hibás válasz | 1.677s | 21556 KiB | ||||
| 114 | Hibás válasz | 1.597s | 21520 KiB | ||||
| 115 | Elfogadva | 1.044s | 23864 KiB | ||||
| 116 | Elfogadva | 830ms | 23856 KiB | ||||
| 117 | Elfogadva | 949ms | 23820 KiB | ||||
| 118 | Elfogadva | 777ms | 23820 KiB | ||||
| 119 | Elfogadva | 1.029s | 23860 KiB | ||||
| 120 | Elfogadva | 771ms | 23860 KiB | ||||
| 121 | Hibás válasz | 1.6s | 21556 KiB | ||||
| 122 | Hibás válasz | 1.567s | 21556 KiB | ||||
| subtask9 | 0/15 | ||||||
| 123 | Elfogadva | 1ms | 316 KiB | ||||
| 124 | Hibás válasz | 1.575s | 21556 KiB | ||||
| 125 | Időlimit túllépés | 2.081s | 22336 KiB | ||||
| 126 | Időlimit túllépés | 2.081s | 12904 KiB | ||||
| 127 | Időlimit túllépés | 2.082s | 14132 KiB | ||||
| 128 | Időlimit túllépés | 2.082s | 22068 KiB | ||||
| 129 | Időlimit túllépés | 2.085s | 18740 KiB | ||||
| 130 | Elfogadva | 263ms | 20548 KiB | ||||
| 131 | Elfogadva | 2ms | 564 KiB | ||||
| 132 | Elfogadva | 2ms | 564 KiB | ||||
| 133 | Elfogadva | 2ms | 748 KiB | ||||
| 134 | Elfogadva | 2ms | 564 KiB | ||||
| 135 | Elfogadva | 2ms | 564 KiB | ||||
| 136 | Elfogadva | 2ms | 660 KiB | ||||
| 137 | Elfogadva | 2ms | 540 KiB | ||||
| 138 | Elfogadva | 2ms | 388 KiB | ||||
| 139 | Elfogadva | 2ms | 564 KiB | ||||
| 140 | Elfogadva | 85ms | 14404 KiB | ||||
| 141 | Elfogadva | 82ms | 14408 KiB | ||||
| 142 | Elfogadva | 82ms | 14504 KiB | ||||
| 143 | Elfogadva | 85ms | 14524 KiB | ||||
| 144 | Elfogadva | 82ms | 14388 KiB | ||||
| 145 | Elfogadva | 85ms | 14388 KiB | ||||
| 146 | Elfogadva | 114ms | 12004 KiB | ||||
| 147 | Elfogadva | 115ms | 12088 KiB | ||||
| 148 | Elfogadva | 112ms | 10600 KiB | ||||
| 149 | Elfogadva | 119ms | 17216 KiB | ||||
| 150 | Elfogadva | 467ms | 4652 KiB | ||||
| 151 | Elfogadva | 495ms | 4404 KiB | ||||
| 152 | Elfogadva | 354ms | 4404 KiB | ||||
| 153 | Elfogadva | 352ms | 4540 KiB | ||||
| 154 | Hibás válasz | 657ms | 6196 KiB | ||||
| 155 | Hibás válasz | 698ms | 6476 KiB | ||||
| 156 | Hibás válasz | 647ms | 6452 KiB | ||||
| 157 | Hibás válasz | 685ms | 6280 KiB | ||||
| 158 | Elfogadva | 474ms | 4404 KiB | ||||
| 159 | Elfogadva | 460ms | 4404 KiB | ||||
| 160 | Elfogadva | 453ms | 4512 KiB | ||||
| 161 | Elfogadva | 442ms | 4400 KiB | ||||
| 162 | Elfogadva | 1.243s | 23720 KiB | ||||
| 163 | Elfogadva | 1.212s | 23732 KiB | ||||
| 164 | Elfogadva | 1.225s | 23776 KiB | ||||
| 165 | Elfogadva | 1.023s | 23844 KiB | ||||
| 166 | Elfogadva | 718ms | 23812 KiB | ||||
| 167 | Elfogadva | 1.062s | 23744 KiB | ||||
| 168 | Elfogadva | 257ms | 16380 KiB | ||||
| 169 | Elfogadva | 263ms | 15924 KiB | ||||
| 170 | Elfogadva | 261ms | 14644 KiB | ||||
| 171 | Elfogadva | 254ms | 16964 KiB | ||||
| 172 | Elfogadva | 1.185s | 21144 KiB | ||||
| 173 | Hibás válasz | 1.233s | 21408 KiB | ||||
| 174 | Hibás válasz | 1.161s | 21156 KiB | ||||
| 175 | Hibás válasz | 1.129s | 21416 KiB | ||||
| 176 | Elfogadva | 1.264s | 21360 KiB | ||||
| 177 | Hibás válasz | 1.189s | 21156 KiB | ||||
| 178 | Elfogadva | 344ms | 16332 KiB | ||||
| 179 | Elfogadva | 352ms | 15168 KiB | ||||
| 180 | Elfogadva | 349ms | 14640 KiB | ||||
| 181 | Elfogadva | 340ms | 18996 KiB | ||||
| 182 | Hibás válasz | 1.876s | 21568 KiB | ||||
| 183 | Hibás válasz | 1.646s | 21556 KiB | ||||
| 184 | Hibás válasz | 1.671s | 21556 KiB | ||||
| 185 | Hibás válasz | 1.761s | 21556 KiB | ||||
| 186 | Hibás válasz | 1.677s | 21556 KiB | ||||
| 187 | Hibás válasz | 1.597s | 21520 KiB | ||||
| 188 | Elfogadva | 1.044s | 23864 KiB | ||||
| 189 | Elfogadva | 830ms | 23856 KiB | ||||
| 190 | Elfogadva | 949ms | 23820 KiB | ||||
| 191 | Elfogadva | 777ms | 23820 KiB | ||||
| 192 | Elfogadva | 1.029s | 23860 KiB | ||||
| 193 | Elfogadva | 771ms | 23860 KiB | ||||
| 194 | Hibás válasz | 1.6s | 21556 KiB | ||||
| 195 | Hibás válasz | 1.567s | 21556 KiB | ||||
| 196 | Időlimit túllépés | 2.079s | 15156 KiB | ||||
| 197 | Időlimit túllépés | 2.079s | 15412 KiB | ||||
| 198 | Időlimit túllépés | 2.079s | 14992 KiB | ||||
| 199 | Időlimit túllépés | 2.079s | 13876 KiB | ||||
| 200 | Időlimit túllépés | 2.095s | 13888 KiB | ||||
| 201 | Időlimit túllépés | 2.095s | 13492 KiB | ||||
| 202 | Időlimit túllépés | 2.095s | 13136 KiB | ||||
| 203 | Időlimit túllépés | 2.095s | 13328 KiB | ||||
| 204 | Időlimit túllépés | 2.075s | 12872 KiB | ||||
| 205 | Időlimit túllépés | 2.075s | 12836 KiB | ||||