Submission #17247247
Source Code Expand
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+5;
int lim,X,n,b[N],l[N],u[N],a[N];
struct num{
int b,l,r;
}c[N];
bool cmp(num i,num j){
return (X-i.b)*i.r+i.b*i.l>(X-j.b)*j.r+j.b*j.l;
}
int calc(int i,int limit){
if(limit>=c[i].b) return (limit-c[i].b)*c[i].r+c[i].b*c[i].l;
else return limit*c[i].l;
}
bool check(int limit){
int pos=limit/X;
lim=limit%X;
int ans=0,sum=0;
for(int i=1;i<=n;++i)
sum-=b[i]*l[i];
for(int i=1;i<=pos;++i)
sum+=calc(i,X);
ans=sum;
for(int i=pos+1;i<=n;++i)
ans=max(ans,sum+calc(i,lim));
if(pos+1<=n){
sum+=calc(pos+1,X);
for(int i=1;i<=pos;++i)
ans=max(ans,sum-calc(i,X)+calc(i,lim));
}
return bool(ans>=0);
}
signed main(){
// freopen("1_009.txt","r",stdin);
cin>>n>>X;
for(int i=1;i<=n;++i)
cin>>b[i]>>l[i]>>u[i];
for(int i=1;i<=n;++i)
c[i].b=b[i],c[i].l=l[i],c[i].r=u[i];
int l=0,r=X*n,ans=X*n;
sort(c+1,c+n+1,cmp);
while(l<=r){
int mid=(l+r)>>1;
if(check(mid)) r=mid-1,ans=mid;
else l=mid+1;
}
cout<<ans;
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | C - Tests |
| User | zykmd |
| Language | C++ (GCC 9.2.1) |
| Score | 800 |
| Code Size | 1083 Byte |
| Status | AC |
| Exec Time | 97 ms |
| Memory | 8272 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 800 / 800 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | 0_000.txt, 0_001.txt, 0_002.txt, 0_003.txt |
| All | 0_000.txt, 0_001.txt, 0_002.txt, 0_003.txt, 1_004.txt, 1_005.txt, 1_006.txt, 1_007.txt, 1_008.txt, 1_009.txt, 1_010.txt, 1_011.txt, 1_012.txt, 1_013.txt, 1_014.txt, 1_015.txt, 1_016.txt, 1_017.txt, 1_018.txt, 1_019.txt, 1_020.txt, 1_021.txt, 1_022.txt, 1_023.txt, 1_024.txt, 1_025.txt, 1_026.txt, 1_027.txt, 1_028.txt, 1_029.txt, 1_030.txt, 1_031.txt, 1_032.txt, 1_033.txt, 1_034.txt, 1_035.txt, 1_036.txt, 1_037.txt, 1_038.txt, 1_039.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 0_000.txt | AC | 9 ms | 3532 KiB |
| 0_001.txt | AC | 2 ms | 3516 KiB |
| 0_002.txt | AC | 3 ms | 3392 KiB |
| 0_003.txt | AC | 2 ms | 3592 KiB |
| 1_004.txt | AC | 2 ms | 3596 KiB |
| 1_005.txt | AC | 2 ms | 3552 KiB |
| 1_006.txt | AC | 88 ms | 8192 KiB |
| 1_007.txt | AC | 85 ms | 8200 KiB |
| 1_008.txt | AC | 37 ms | 4764 KiB |
| 1_009.txt | AC | 97 ms | 8208 KiB |
| 1_010.txt | AC | 24 ms | 4672 KiB |
| 1_011.txt | AC | 85 ms | 8212 KiB |
| 1_012.txt | AC | 52 ms | 5672 KiB |
| 1_013.txt | AC | 96 ms | 8244 KiB |
| 1_014.txt | AC | 42 ms | 5612 KiB |
| 1_015.txt | AC | 71 ms | 8072 KiB |
| 1_016.txt | AC | 14 ms | 3844 KiB |
| 1_017.txt | AC | 89 ms | 8148 KiB |
| 1_018.txt | AC | 52 ms | 5976 KiB |
| 1_019.txt | AC | 88 ms | 8152 KiB |
| 1_020.txt | AC | 43 ms | 5044 KiB |
| 1_021.txt | AC | 95 ms | 8216 KiB |
| 1_022.txt | AC | 22 ms | 4240 KiB |
| 1_023.txt | AC | 83 ms | 8192 KiB |
| 1_024.txt | AC | 29 ms | 4576 KiB |
| 1_025.txt | AC | 96 ms | 8116 KiB |
| 1_026.txt | AC | 78 ms | 7868 KiB |
| 1_027.txt | AC | 83 ms | 8224 KiB |
| 1_028.txt | AC | 74 ms | 6936 KiB |
| 1_029.txt | AC | 96 ms | 8068 KiB |
| 1_030.txt | AC | 11 ms | 3668 KiB |
| 1_031.txt | AC | 80 ms | 8212 KiB |
| 1_032.txt | AC | 79 ms | 7700 KiB |
| 1_033.txt | AC | 89 ms | 8204 KiB |
| 1_034.txt | AC | 58 ms | 6280 KiB |
| 1_035.txt | AC | 83 ms | 8032 KiB |
| 1_036.txt | AC | 27 ms | 4552 KiB |
| 1_037.txt | AC | 89 ms | 8204 KiB |
| 1_038.txt | AC | 72 ms | 8272 KiB |
| 1_039.txt | AC | 90 ms | 8204 KiB |