然后你就可以写出一坨屎,,,
仅供观赏 ,不具实际意义 ,举报随意
我先去大脑升级
创死你,,,
#include <bits/stdc++.h>
using namespace std;
#define cmin(x, ...) x = min({x, __VA_ARGS__})
#define cmax(x, ...) x = max({x, __VA_ARGS__})
#define fors(i, l, r, ...) \
for (int i = (l), i##end = (r), ##__VA_ARGS__; i <= i##end; ++i)
#define dfors(i, r, l, ...) \
for (int i = (r), i##end = (l), ##__VA_ARGS__; i >= i##end; --i)
int n, m, q;
template <class T>
struct segtree {
struct node {
int v = 0, tag = 0;
bool operator<(const node& o) const { return v < o.v; }
};
vector<node> a;
const int _n;
segtree(int n) : _n(n), a(4 << __lg(n)) {}
segtree(int n, const T& x) : _n(n), a(4 << __lg(n)) {
for (auto& c : a) c = x;
}
template <class L>
void apply(int p, int q, const T& v, L op) {
apply(p, q, v, 1, 1, n, op);
}
template <class L>
void apply(int p, int q, const T& v, int x, int l, int r, L op) {
if (l > q || r < p) return;
op_s(a[x].v, v);
if (l >= p && r <= q) return op_f(a[x].tag, v);
int mid = (l + r) / 2;
apply(p, q, v, x * 2, l, mid), apply(p, q, v, x * 2 + 1, mid + 1, r);
}
template <class L>
node ask(int p, int q, L call) {
return ask(p, q, 1, 1, n, call);
}
node ask(int p, int q, int x, int l, int r) {
if (l > q || r < p) return 0;
if (l >= p && r <= q) return call(a[x]);
int mid = (l + r) / 2;
return max(ask(p, q, x * 2, l, mid), ask(p, q, x * 2 + 1, mid + 1, r));
}
};
signed main() {
ios::sync_with_stdio(0), cin.tie(0);
cin >> n >> m >> q;
segtree<segtree<int>> seg(n, segtree<int>(m));
for (int d, s, w, x, y; q--;) {
cin >> d >> s >> w >> x >> y, x++, y++;
seg.apply(x, x + d - 1,
seg.ask(x, x + d - 1,
[&](segtree<int>& t) {
return t.ask(y, y + s - 1, [&](segtree<int>::node& x) {
return x.v;
});
}),
[&](segtree<int>& t, const segtree<int>::node& v) {
t.apply(y, y + s - 1, {v, 0},
[&](int& v, segtree<int>::node& _v) { cmax(v, _v.v); });
})
}
cout << seg.ask(1, n,
[&](const segtree<int>& t) {
return t.ask(1, m, const segtree<int>::node& x) {
return x.v;
}
})
.v
<< "\n";
return 0;
}