题主还在不。AC了吗?
这题根本不用二分。只要排个序扫一遍就可以了。
```cpp
#include <bits/stdc++.h>
#define maxn 1010
using namespace std;
struct work
{
int t,s;
};
work arr[maxn];
int n,ans;
bool camp(work a,work b)
{
return a.s < b.s;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d %d",&arr[i].t,&arr[i].s);
sort(arr+1,arr+n+1,camp);
int ans = INT_MAX,now = 0;
for(int i=1;i<=n;i++)
{
now += arr[i].t;
if (now > arr[i].s) {cout<<-1<<endl; return 0;}
else ans = min(ans, arr[i].s - now);
}
cout<<ans<<endl;
return 0;
}
```
by LittleSmartGhost @ 2018-08-22 19:24:16
h
by DDDumpling @ 2023-08-22 18:40:14