QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#684624#9529. Farm Managementhz666WA 7ms22476kbC++232.6kb2024-10-28 14:49:582024-10-28 14:49:58

Judging History

你现在查看的是最新测评结果

  • [2024-10-28 14:49:58]
  • 评测
  • 测评结果:WA
  • 用时:7ms
  • 内存:22476kb
  • [2024-10-28 14:49:58]
  • 提交

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 k, int nl = 1, int nr = R, int p = 1) {
    // cerr << k << " " << nl << " " << nr << " " << p << endl;
    // // cerr << tree[p] << endl;
    // if (tree[p] < k) {
    //     return nl;
    // }
    if (nl == nr) {
        return nl;
    }
    int mid = nl + nr >> 1;
    if (tree[p << 1 | 1] <= k) {
        return Query(k - tree[p << 1 | 1], nl, mid, p << 1);
    } else {
        return Query(k, mid + 1, nr, p << 1 | 1);
    }
}
}Tw, Tsum;
void Test() {
    Tsum.update(3, 7);
    Tsum.update(5, 6);
    Tsum.update(2, 3);
    Tsum.update(10, 1);
    Tsum.update(79, 1);
    Tsum.update(99, 100);
    cerr << Tsum.Query(101) << endl;
    cerr << Tsum.Query(99) << endl;
    cerr << Tsum.Query(100) << endl;
}
int main() {
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
    // Test();
    // system("pause");
    int n, m;
    cin >> n >> m;
    i64 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(now);
            sum += Tw.query(xx + 1, R) + 1LL * (now - Tsum.query(xx + 1, R)) * xx;
        } 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;
}

详细

Test #1:

score: 100
Accepted
time: 3ms
memory: 14100kb

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: 0
Accepted
time: 0ms
memory: 20312kb

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:

35204500

result:

ok single line: '35204500'

Test #3:

score: 0
Accepted
time: 0ms
memory: 20196kb

input:

15 32
835418 2 3
178262 1 3
527643 2 2
519710 1 1
774544 3 3
82312 1 1
808199 1 1
809396 1 3
255882 1 3
80467 1 3
874973 1 3
813965 1 2
198275 1 2
152356 1 3
802055 1 1

output:

22000255

result:

ok single line: '22000255'

Test #4:

score: 0
Accepted
time: 0ms
memory: 22476kb

input:

13 20
526447 1 1
807398 2 2
4167 1 2
944031 2 2
830685 2 2
394251 1 2
505011 1 2
968848 1 1
58170 1 3
32504 1 1
792273 3 3
196120 1 2
714507 1 1

output:

12878768

result:

ok single line: '12878768'

Test #5:

score: 0
Accepted
time: 0ms
memory: 22392kb

input:

13 32
582584 1 3
335440 3 3
971984 1 2
864169 1 2
528515 1 1
382399 1 2
459855 1 2
406909 2 3
66780 2 3
885118 3 3
434844 1 2
93331 1 3
502509 1 3

output:

22065034

result:

ok single line: '22065034'

Test #6:

score: 0
Accepted
time: 3ms
memory: 18188kb

input:

12 77
30244 1 7
518214 3 8
486001 8 9
152634 2 3
180255 3 4
791887 1 6
635820 2 9
881171 3 5
337905 3 8
683182 5 5
300786 3 6
339094 7 9

output:

50453764

result:

ok single line: '50453764'

Test #7:

score: 0
Accepted
time: 0ms
memory: 20184kb

input:

10 3923726
826284 215861 638800
471693 146746 886003
140800 532315 684546
673434 604071 814259
170671 299465 525449
104262 689547 855391
215333 591975 803421
795321 31606 984783
103838 361911 601318
145693 450227 686945

output:

1597735409747

result:

ok single line: '1597735409747'

Test #8:

score: -100
Wrong Answer
time: 7ms
memory: 14668kb

input:

100000 16648414311
252800 55607 195981
157144 548469 789695
643048 2 2
907957 3 3
32532 231618 316365
194428 227513 762023
4231 393553 699179
898052 3 5
507551 3 5
747498 1 4
857939 9 9
440056 764429 796585
495571 117772 838593
4059 551203 870687
60877 597981 770178
593237 4 10
438147 218335 370780
...

output:

0

result:

wrong answer 1st lines differ - expected: '4148641232436282', found: '0'