QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#747357 | #7744. Elevator | Diverbee# | TL | 1ms | 3600kb | C++14 | 1.3kb | 2024-11-14 16:58:47 | 2024-11-14 16:58:47 |
Judging History
answer
#include "bits/stdc++.h"
using namespace std;
using ll = long long;
void work(){
ll n,k;cin>>n>>k;
vector<tuple<ll,ll,ll> > vc(n);
for(auto &[u,v,w]:vc)cin>>u>>v>>w;
sort(vc.begin(),vc.end(),[](tuple<ll,ll,ll> a,tuple<ll,ll,ll> b){
return get<2>(a)>get<2>(b);
});
ll ans = 0;
ll sheng = 0;
ll yy = 0;
for(int i = 0; i < n ;){
auto &[c,w,h] = vc[i];
if(c==0){
++i;
continue;
}
if(w&1&&yy&&c){
int tem = min(c,yy);
c -= tem;
yy -= tem;
continue;
}
if(c/(k/w)){
ll nc = c%(k/w);
ans += c/(k/w)*h;
c = nc;
continue;
}
if(sheng==0){
sheng = k;
ans += h;
}
if(w&1){
int tem = min(c,sheng);
c -= tem;
sheng -= tem;
}else{
if(sheng==1){
yy++;
continue;
}
int tem = min(c,sheng/2);
c-=tem;
sheng -= tem*2;
}
}
cout<<ans<<'\n';
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int t;cin>>t;
while (t--){
work();
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3600kb
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
Time Limit Exceeded
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...