注意 这种方法虽然可以算 但会有只出现一个的区间 例如 1 100 200 那么这么算res1==res2==0了就
所以还是y总的板子好[/dog] 毒瘤:
毒瘤:这题1的时间间隔也算不算挤奶的时间!!!
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
vector<pair<int,int>> vec;
while(n--)
{
int l,r;
cin>>l>>r;
vec.push_back({l,r});
}
sort(vec.begin(),vec.end());
int st=vec[0].first,ed=vec[0].second;
long long res1=0,res2=0;
for(int i=1;i<vec.size();i++)//其实这么算也没问题
{
if(vec[i].first>ed+1) res2=max(res2,(long long)vec[i].first-ed),st=vec[i].first,ed=vec[i].second,res1=max(res1,(long long) ed-st);
else
ed=max(ed,vec[i].second),res1=max(res1,(long long)ed-st);
}
// for(int i=1;i<vec.size();i++)
// {
// if(vec[i].first>ed+1)
// {
// res1=max(res1,(long long)ed-st);
// res2=max(res2,(long long)vec[i].first-ed);
// st=vec[i].first,ed=vec[i].second;
// }
// else
// ed=min(ed,vec[i].second);
// }
cout<<res1<<' '<<res2;
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
vector<pair<int,int>> vec;
while(n--)
{
int l,r;
cin>>l>>r;
vec.push_back({l,r});
}
sort(vec.begin(),vec.end());
int st=vec[0].first,ed=vec[0].second;
long long res1=0,res2=0;
for(int i=1;i<vec.size();i++)//其实这么算也没问题
{
if(vec[i].first>=ed+1) res2=max(res2,(long long)vec[i].first-ed),res1=max(res1,(long long) ed-st),st=vec[i].first,ed=vec[i].second;
else
ed=max(ed,vec[i].second);
}
// for(int i=1;i<vec.size();i++)
// {
// if(vec[i].first>ed+1)
// {
// res1=max(res1,(long long)ed-st);
// res2=max(res2,(long long)vec[i].first-ed);
// st=vec[i].first,ed=vec[i].second;
// }
// else
// ed=min(ed,vec[i].second);
// }
res1=max(res1,(long long)ed-st);
cout<<res1<<' '<<res2;
return 0;
}