QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#762823 | #7744. Elevator | icpc_zhzx034# | WA | 15ms | 6192kb | C++14 | 1.8kb | 2024-11-19 16:50:19 | 2024-11-19 16:50:24 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> P;
#define fi first
#define se second
#define mkp make_pair
#define pb emplace_back
#define popcnt __builtin_popcountll
const int mod = 998244353;
inline ll read(){
ll x=0, f=1; char ch=getchar();
while(ch<'0' || ch>'9') { if(ch=='-') f=-1; ch=getchar(); }
while(ch>='0' && ch<='9') x=x*10+ch-'0', ch=getchar();
return x*f;
}
inline int lg2(int x){ return 31^__builtin_clz(x); }
inline ll lg2(ll x){ return 63^__builtin_clzll(x); }
inline ll qpow(ll a,ll b){
ll ans=1, base=a;
while(b){
if(b&1) ans=ans*base%mod;
base=base*base%mod; b>>=1;
}
return ans;
}
void init(){ }
ll n,k,now;
struct Node{
ll c, w, f;
}s[100005];
void doit(){
while(now<=n){
if(!s[now].c || s[now].w!=1) now ++;
else break;
}
if(now<=n) s[now].c --;
}
void procedure(){
n=read(), k=read();
for(ll i=1;i<=n;i++){
s[i].c=read(), s[i].w=read(), s[i].f=read();
}
sort(s+1, s+n+1, [](Node A, Node B){ return A.f > B.f; });
ll pt=1, ans=0; now=1;
while(pt<=n){
// cerr<<"pt = "<<pt<<endl;
while(pt <= n && s[pt].c == 0) pt ++; if(pt > n) break;
// cerr<<"found pt = "<<pt<<endl;
ans += s[pt].c*s[pt].w/k*s[pt].f;
s[pt].c %= (k/s[pt].w);
ans += s[pt].f;
ll res=k-s[pt].w*s[pt].c, cur=pt+1;
while(cur<=n && res){
// cout<<"cur = "<<cur<<endl;
// usleep(100000);
if(s[cur].w * s[cur].c <= res){
s[cur].c = 0;
cur ++;
}else{
int q = res / s[cur].w;
s[cur].c -= q;
res -= q * s[cur].w;
break;
}
}
if(res) doit();
pt = cur;
}
printf("%lld\n", ans);
}
int main(){
#ifdef LOCAL
assert(freopen("input.txt","r",stdin));
assert(freopen("output.txt","w",stdout));
#endif
ll T=read();
init();
while(T--) procedure();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3900kb
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: 15ms
memory: 6192kb
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 14 4 5 7 1 3 9 6 1 10 4 7 17 5 4 1 8 5 5 7 1 3 7 6 3 3 2 2 2 3 8 1 4 6 9 10 141 7 10 2 7 7 8 6 5 5 1 7 2 5 10 7 7 10 8 1 4 2 3 9 1 5 2 9 1 6 7 7 6 10 10 8 10 4 9 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 7 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 7 7 3 2 4 4 9 ...
result:
wrong answer 3rd lines differ - expected: '23', found: '14'