#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 110;
ll n,p;
struct stu{
ll z,a,b;
}m[N];
bool check(ll x){
ll sum = 0;
for (int i = 1;i <= n;i++){
if (x <= m[i].z) sum += m[i].a*x;
else sum += m[i].a*m[i].z + m[i].b*(x-m[i].z);
}
return sum >= p;
}
void find(){
int l = 0,r = p+1,ans = 0;
while (l+1 < r){
ll mid = (l+r)>>1;
if (check(mid)) r = mid,ans = mid;
else l = mid;
}
cout<<ans;
return;
}
int main(){
cin>>n>>p;
for (int i = 1;i <= n;i++) cin>>m[i].z>>m[i].a>>m[i].b;
find();
return 0;
}
该代码中,将r改成1e12+1没有WA,但全TLE,若r=p+1,则会有WA和TLE。