60pts求调
查看原帖
60pts求调
1312367
lucus_Fu0202楼主2025/8/4 16:23
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <string>
#include <iomanip>
#include <vector>
#include <set>
#include <cctype>
#include <stack>
#include <map>
#include <list>
#include <array>
#include <deque>
#include <bitset>
typedef long long ll;
typedef long double lld;
#define Debug(x) cout<<#x<<":"<<x<<"("<<__LINE__<<")and("<<__FUNCTION__<<")"<<'\n'
using namespace std;
ll n, m, f[100005],s[100005];
inline ll read() {
	ll x = 0, f = 1;
	char ch = getchar();
	while (ch < '0' || ch > '9') {
		if (ch == '-') f = -1;
		ch = getchar();
	}
	while (ch >= '0' && ch <= '9') {
		x = x * 10 + ch - 48;
		ch = getchar();
	}
	return x * f;
}
bool check(int x) {
	ll sum = 0;
	for(int i = 1 ; i <= n ; i++) {
		if(s[i] > x) {
			sum = 0;
		}else{
			sum += f[i];
		}
		if(sum >= m) {
			return true;
		}
	}
	return false;
} 
int main() {
	//ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	n = read(),m = read();
	for(int i = 1 ; i <= n ; i++) {
		f[i] = read(),s[i] = read();
	}
	int l = 0,r = 1000000001;
	while(l + 1 < r) {
		int mid = (l + r) / 2;
		if(check(mid)) {
			r = mid;
		}else{
			l = mid;
		}
	}
	cout<<l + 1;
	return 0;
}
2025/8/4 16:23
加载中...