题目大意:
找出n天中m个安排后1~n中没有安排的天数的最大连续值
思路:
类似于区间合并,不过不用合并这个步骤,只用上个区间的r 和下个区间的l维护ans就行
代码实现:
#include "iostream"
#include "vector"
#include "algorithm"
using namespace std;
const int N = 1e5 + 10;
typedef pair<int, int> PII;
vector<PII> a;
int main(){
int n, m;
cin >> n >> m;
int l, r;
for(int i = 1; i <= m; i ++){
cin >> l >> r;
a.push_back({l, r});
}
sort(a.begin(), a.end());
int ans = 0;
int lr = a[0].second;
for(int i = 1; i < m; i ++){
if(a[i].first > lr){
ans = max(ans, a[i].first - lr - 1);
}
lr = max(lr, a[i].second);
}
ans = max(ans, a[0].first - 1);
ans = max(ans, n - lr);
cout << ans << endl;
return 0;
}