include [HTML_REMOVED]
include [HTML_REMOVED]
include [HTML_REMOVED]
include [HTML_REMOVED]
using namespace std;
bool check(vector[HTML_REMOVED] time, int k){
bool flag = false;
for(int i = 1;i <= time.size();i ++) {
if(time[i] > k) flag = true;
}
return flag;
}; // 如果time里面存在大于k的,说明在资源充足下,仍然可以继续施肥
int main(){
int n, m, k; // n待开垦的区域数量 m资源总数 k每块区域的最少开垦天数
cin >> n >> m >> k;
vector[HTML_REMOVED] count;
vector[HTML_REMOVED] time;
vector[HTML_REMOVED] c;
time.push_back(0);
c.push_back(0);
for(int i = 1;i <= n;i ) {
int a, b;
cin >> a >> b;
time.push_back(a);
c.push_back(b);
}
int cmax = INT_MIN; // 开垦时间最长值
int f; // 开垦时间最长的田 减少一天时间需要的资源
int d; // 开垦时间最长值对应的田序号
for(int i = 1;i <= n;i ) {
if(time[i] > cmax && time[i] >= k) {
cmax = time[i];
d = i;
}
}
f = c[d];
//cout << cmax << endl << f;
while(check(time, k)&&m>=f&&m>=0){ // 当前资源足够给时间最长的田施肥 且每个田的状态都ok
m -= f;
time[d] –;
//for(int i = 1;i <= n;i ++) cout << time[i] << " ";
cmax = INT_MIN;
for(int i = 1;i <= n;i ++) {
if(time[i] > cmax && time[i] >= k) {
cmax = time[i];
d = i;
}
}
f = c[d];
// cout << "m: " << m << " f: " << f << endl;
}
cmax = INT_MIN;
for(int i = 1;i <= n;i ++) {
if(time[i] > cmax) cmax = time[i];
}
cout << cmax;
return 0;
}