QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#882816 | #9683. 士兵 | nie_zy | Compile Error | / | / | C++14 | 3.0kb | 2025-02-05 11:38:29 | 2025-02-05 11:38:30 |
Judging History
This is the latest submission verdict.
- [2025-02-05 11:38:30]
- Judged
- Verdict: Compile Error
- Time: 0ms
- Memory: 0kb
- [2025-02-05 11:38:29]
- Submitted
answer
#include <bits/stdc++.h>
#define pl p << 1
#define pr p << 1 | 1
#define mid (l + r >> 1)
using namespace std;
typedef long long ll;
const int MAXN = 5e5 + 5;
int n, m, a[MAXN], b[MAXN], lsh[MAXN], lsh_cnt;
struct seg {
const ll INF 1e18;
int B;
struct node {
ll mx1, mx2, add;
} t[MAXN << 2];
void build(int p, int l, int r) {
if (l == r) {
t[p] = {l ? -(ll)lsh[l] * m : 0, 0, 0};
return;
}
build(pl, l, mid), build(pr, mid + 1, r);
t[p] = {max(t[pl].mx1, t[pr].mx1), 0, 0};
return;
}
void init() {
B = lsh_cnt;
build(1, 0, B);
return;
}
void _spd(int p, ll k) {
t[p].mx1 += k, t[p].mx2 += k, t[p].add += k;
return;
}
void spd(int p) {
_spd(pl, t[p].add);
_spd(pr, t[p].add);
t[p].add = 0;
return;
}
ll ask1(int p, int l, int r, int L, int R) {
if (R < l || L > r) return -INF;
if (L <= l && r <= R) return t[p].mx1;
spd(p);
return max(ask1(pl, l, mid, L, R), ask1(pr, mid + 1, r, L, R));
}
ll ask2(int p, int l, int r, int L, int R) {
if (R < l || L > r) return -INF;
if (L <= l && r <= R) return t[p].mx2;
spd(p);
return max(ask2(pl, l, mid, L, R), ask2(pr, mid + 1, r, L, R));
}
void add(int p, int l, int r, int L, int R, int k) {
if (R < l || L > r) return;
if (L <= l && r <= R) {
_spd(p, k);
return;
}
spd(p);
add(pl, l, mid, L, R, k), add(pr, mid + 1, r, L, R, k);
t[p].mx1 = max(t[pl].mx1, t[pr].mx1);
t[p].mx2 = max(t[pl].mx2, t[pr].mx2);
return;
}
void chg(int p, int l, int r, int x, ll k) {
if (l == r) {
t[p].mx1 = max(t[p].mx1, k);
t[p].mx2 = t[p].mx1 + (ll)lsh[x] * m;
return;
}
spd(p);
x <= mid ? chg(pl, l, mid, x, k) : chg(pr, mid + 1, r, x, k);
t[p].mx1 = max(t[pl].mx1, t[pr].mx1);
t[p].mx2 = max(t[pl].mx2, t[pr].mx2);
return;
}
} T;
ll ans;
void dp() {
T.init();
for (int i = 1; i <= n; i++) {
int j = lower_bound(lsh + 1, lsh + lsh_cnt + 1, a[i]) - lsh;
if (b[i] < 0) {
ll mx = T.ask1(1, 0, T.B, j, lsh_cnt);
T.chg(1, 0, T.B, j - 1, mx);
}
else {
ll mx = T.ask2(1, 0, T.B, 0, j - 1);
T.chg(1, 0, T.B, j, mx - (ll)a[i] * m);
}
T.add(1, 0, T.B, j, lsh_cnt, b[i]);
}
ans = T.t[1].mx1;
return;
}
int main() {
ios::sync_with_stdio(0), cin.tie(0);
int T; cin >> T;
while (T--) {
cin >> n >> m;
for (int i = 1; i <= n; i++) {
cin >> a[i] >> b[i];
lsh[i] = a[i];
}
sort(lsh + 1, lsh + n + 1);
lsh_cnt = unique(lsh + 1, lsh + n + 1) - lsh - 1;
dp();
cout << ans << "\n";
}
return 0;
}
Details
answer.code:12:14: error: expected ‘;’ at end of member declaration 12 | const ll INF 1e18; | ^~~ | ; answer.code:12:18: error: expected unqualified-id before numeric constant 12 | const ll INF 1e18; | ^~~~ answer.code:85:3: error: use of deleted function ‘seg::seg()’ 85 | } T; | ^ answer.code:11:8: note: ‘seg::seg()’ is implicitly deleted because the default definition would be ill-formed: 11 | struct seg { | ^~~ answer.code:11:8: error: uninitialized const member in ‘struct seg’ answer.code:12:14: note: ‘const ll seg::INF’ should be initialized 12 | const ll INF 1e18; | ^~~ answer.code:85:3: note: use ‘-fdiagnostics-all-candidates’ to display considered candidates 85 | } T; | ^