QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#684552 | #9529. Farm Management | hz666 | WA | 3ms | 18220kb | C++23 | 2.2kb | 2024-10-28 14:20:28 | 2024-10-28 14:20:28 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
using i64 = long long;
using arr = array<int, 3>;
const int N = 1e6 + 10;
const int R = 1e6;
struct segtree {
i64 tree[N << 2];
void update(int pos, i64 k, int l = 1, int r = R, int p = 1) {
if (l == r) {
tree[p] += k;
return;
}
int mid = l + r >> 1;
if (mid >= pos) {
update(pos, k, l, mid, p << 1);
} else {
update(pos, k, mid + 1, r, p << 1 | 1);
}
tree[p] = tree[p << 1] + tree[p << 1 | 1];
}
i64 query(int l, int r, int nl = 1, int nr = R, int p = 1) {
if (l <= nl && r >= nr) {
return tree[p];
}
int mid = nl + nr >> 1;
i64 ans = 0;
if (mid >= l) {
ans += query(l, r, nl, mid, p << 1);
}
if (mid < r) {
ans += query(l, r, mid + 1, nr, p << 1 | 1);
}
return ans;
}
int Query(int l, int r, int k, int nl = 1, int nr = R, int p = 1) {
if (tree[p] >= k) {
return l;
}
int mid = nl + nr >> 1;
if (tree[p << 1 | 1] >= k) {
return Query(l, r, k - tree[p << 1 | 1], nl, mid, p << 1);
} else {
return Query(l, r, k, mid + 1, nr, p << 1 | 1);
}
}
}Tw, Tsum;
int main() {
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
int n, m;
cin >> n >> m;
int now = m;
i64 Sum = 0;
vector<arr> v(n);
for (auto &[w, l, r] : v) {
cin >> w >> l >> r;
now -= l;
Sum += 1LL * w * l;
Tw.update(w, 1LL * (r - l) * w);
Tsum.update(w, r - l);
}
// cerr << now << " " << Sum << endl;
i64 ans = 0, sum = 0;
for (auto &[w, l, r] : v) {
now += l;
sum = Sum - 1LL * w * l;
// cerr << now << " " << sum << endl;
int x = Tsum.query(w + 1, R);
if (x >= now) {
int xx = Tsum.Query(w + 1, R, now);
sum += Tw.query(xx, R) + 1LL * (now - Tsum.query(xx, R)) * (xx - 1);
} else {
sum += Tw.query(w + 1, R) + 1LL * (now - x) * w;
}
// cerr << sum << endl;
ans = max(ans, sum);
now -= l;
}
cout << ans << endl;
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 14076kb
input:
5 17 2 3 4 6 1 5 8 2 4 4 3 3 7 5 5
output:
109
result:
ok single line: '109'
Test #2:
score: -100
Wrong Answer
time: 3ms
memory: 18220kb
input:
12 62 503792 9 10 607358 1 3 600501 10 10 33249 4 4 774438 6 6 197692 3 6 495807 8 8 790225 5 9 77272 3 8 494819 4 9 894779 3 9 306279 5 6
output:
44007019
result:
wrong answer 1st lines differ - expected: '35204500', found: '44007019'