厌氧求救
查看原帖
厌氧求救
1030776
Bluish_Light楼主2024/1/28 13:29

虽然有个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;
}
2024/1/28 13:29
加载中...