虽然有个dalao帮我改了下但是就80分了
厌氧代码如下:
#include<bits/stdc++.h>
using namespace std;
long long n;
struct things{
long long start,finishtime;
}b[1005];
int check(int key){
long long ti=key;
for(int i=1;i<=n;i++){
ti+=b[i].start;
if(ti>b[i].finishtime) return 0;
}
if(ti!=b[n].finishtime-1) return 1;
else return 2;
}
int find(){
long long first=0,last=b[n].finishtime,key,pd;
while(first<last){
key=(first+last)/2;
pd=check(key);
if(key==0 and pd!=2) return 0;
if(pd==2) return key;
else if(pd==1) first=key+1;
else last=key;
}
}
bool cmp(things k,things l){
if(k.finishtime!=l.finishtime) return k.finishtime<l.finishtime;
else return k.start>l.start;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>b[i].start>>b[i].finishtime;
}
sort(b+1,b+n+1,cmp);
cout<<find()-1;
return 0;
}