QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#343848 | #7744. Elevator | ucup-team992# | RE | 1ms | 3592kb | C++20 | 1001b | 2024-03-03 06:55:46 | 2024-03-03 06:55:46 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int main() {
int T; cin >> T;
for(int t = 0; t < T; t++) {
ll N, K; cin >> N >> K;
vector<pair<ll,ll>> W1, W2;
for(int i = 0; i < N; i++) {
int C,W,F; cin >> C >> W >> F;
if(W == 1) W1.push_back({F,C});
else W2.push_back({F,C});
}
sort(W1.begin(), W1.end());
for(int j = W1.size()-1; j >= 0; j--) {
ll cj = (W1[j].second + 1)/2;
if(cj > 0) W2.push_back({W1[j].first, cj});
if(W1[j].second % 2) {
if(j-1 > 0) W1[j-1].second--;
}
}
sort(W2.begin(), W2.end());
ll R = 0;
K /= 2;
while(W2.size()) {
R += (W2.back().second/K)*W2.back().first;
W2.back().second %= K;
if(W2.back().second) {
R += W2.back().first;
ll g = K;
while(g>0) {
ll m = min(g, W2.back().second);
g -= m;
W2.back().second -= m;
if(!W2.back().second) W2.pop_back();
}
} else W2.pop_back();
}
cout << R << endl;
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3592kb
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
Runtime Error
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