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
AC × 4
AC × 40
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