结果天数越少,需要消耗的资源就越多,结果天数越大,需要消耗的资源就越少
满足单调性,可以使用二分
#include <bits/stdc++.h>
using namespace std;
int n,m,k;
const int N=1e5+10;
typedef long long ll;
int t[N],c[N];
bool check(int mid){
ll res=0;
for(int i=0;i<n;i++){
if(t[i]>=mid) res+=(t[i]-mid)*c[i];
}
if(res<=m) return true;
else return false;
}
int main(){
cin>>n>>m>>k;
int mx=0;
for(int i=0;i<n;i++){
cin>>t[i]>>c[i];
mx=max(mx,t[i]);
}
int l=k,r=mx;
while(r>l){
int mid=(l+r)/2;//注意模板中,如果满足后是r=mid,则mid=(l+r)/2,如果是l=mid,则为mid=(l+r+1)/2;
if(check(mid)) r=mid;
else l=mid+1;
}
cout<<l;
return 0;
}