QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#747438 | #7744. Elevator | Diverbee# | TL | 0ms | 3540kb | C++14 | 1.4kb | 2024-11-14 17:10:08 | 2024-11-14 17:10:11 |
Judging History
answer
#include "bits/stdc++.h"
using namespace std;
using ll = long long;
#define int 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(sheng==0&&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){
ll tem = min(c,sheng);
c -= tem;
sheng -= tem;
}else{
if(sheng==1){
yy++;
continue;
}
ll tem = min(c,sheng/2);
c-=tem;
sheng -= tem*2;
}
}
cout<<ans<<'\n';
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int t;cin>>t;
while (t--){
work();
}
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 0ms
memory: 3540kb
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...