QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#853445#7744. Elevatortopfloorboss#WA 38ms5500kbC++201.7kb2025-01-11 17:02:292025-01-11 17:02:34

Judging History

This is the latest submission verdict.

  • [2025-01-11 17:02:34]
  • Judged
  • Verdict: WA
  • Time: 38ms
  • Memory: 5500kb
  • [2025-01-11 17:02:29]
  • Submitted

answer

#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
#include <string>
#include <bitset>
#include <iterator>
#include <iomanip>
#include <map>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <ctime>
#include <deque>
#include <queue>
#include <stack>
#include <random>
#include <cassert>
#include <array>

using namespace std;
using ll = long long;

#define pb push_back
#define all(x) (x).begin(), (x).end()
#define int ll

void solve() {
    int n, k; cin >> n >> k;
    vector<array<int, 3>> a(n);
    for (int i = 0; i < n; i++) {
        cin >> a[i][1] >> a[i][2] >> a[i][0];
    }
    sort(all(a));
    int ans = 0;
    int i = n - 1;
    while (i >= 0) {
        if (a[i][1] * a[i][2] >= k) {
            int mcnt_one = k / a[i][2];
            int pick = a[i][1] / mcnt_one;;
            ans += a[i][0] * pick;
            a[i][1] -= mcnt_one * pick;
        } else {
            int cs = a[i][1] * a[i][2];
            a[i][1] = 0;
            int j = i - 1;
            while (j >= 0 && cs + a[j][2] <= k) {
                int canpick = min(a[j][1], (k - cs) / a[j][2]);
                a[j][1] -= canpick;
                cs += canpick * a[j][2];
                j--;
            }
            ans += a[i][0];
        }
        while (i >= 0 && a[i][1] == 0) i--;
    }
    cout << ans << '\n';
}

signed main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
#ifdef LOCAL
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
#endif
    int tc = 1;
    cin >> tc;
    for (int t = 1; t <= tc; ++t) {
        solve();
    }
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3808kb

input:

2
4 6
1 1 8
7 2 5
1 1 7
3 2 6
8 1200000
100000 1 100000
100000 1 12345
100000 2 100000
100000 2 12345
100000 1 100000
100000 1 12345
100000 2 100000
100000 2 12345

output:

24
100000

result:

ok 2 lines

Test #2:

score: -100
Wrong Answer
time: 38ms
memory: 5500kb

input:

5501
8 104
5 2 3
6 2 4
5 2 3
6 2 9
8 2 4
2 1 3
7 2 4
8 2 8
1 290
3 1 1
12 12
6 1 2
1 2 2
1 1 2
1 2 4
6 1 1
1 2 5
6 1 4
4 1 4
6 2 4
6 2 5
4 2 5
4 1 4
5 334
1 1 4
1 2 3
4 2 1
5 1 1
2 1 2
13 218
5 2 3
5 1 4
1 2 1
1 2 5
3 2 2
1 1 3
4 2 2
1 2 5
2 2 1
2 1 5
3 2 1
5 2 1
1 1 4
10 260
7 2 1
5 1 1
5 2 4
6 1 6...

output:

9
1
23
4
5
7
1
3
9
6
1
10
4
9
17
6
4
1
8
5
5
7
1
3
23
6
3
3
2
2
2
3
8
1
5
6
9
11
150
7
10
2
7
7
8
6
5
5
1
7
3
5
10
7
7
10
8
1
4
2
3
9
1
5
2
9
1
6
7
7
6
10
18
8
10
4
10
9
2
8
3
5
9
3
6
5
3
2
6
1
3
2
2
1
6
9
6
3
4
8
9
9
2
6
1
2
6
7
5
2
5
21
8
1
2
3
4
9
3
4
6
5
9
6
1
7
3
7
3
2
2
8
7
3
5
9
7
10
7
3
2
4
...

result:

wrong answer 39th lines differ - expected: '147', found: '150'