[编程题]视野争夺
视野争夺
https://www.nowcoder.com/questionTerminal/61e1e66e39f348cdb6495de91ac36a41
https://www.nowcoder.com/questionTerminal/61e1e66e39f348cdb6495de91ac36a41
# include <iostream>
# include <cstdlib>
# include <stack>
# include <cstring>
# include <unordered_map>
# include <vector>
# include <algorithm>
# define N 100100
# define inf 0x3f3f3f3f
using namespace std;
int main(void){
int n,L;
cin>>n>>L;
vector<vector<int>> nums;
int a,b;
for ( int i=0; i<n; ++i ){
cin>>a>>b;
nums.push_back({a,b});
}
sort( nums.begin(), nums.end(), [](vector<int>&a, vector<int>&b){
return a[0]<b[0] || (a[0]==b[0] && a[1]>b[1]);
} );
int pre = 0, i=0, ans=0, last=0;
while( i<nums.size() ){
while( i<nums.size() && nums[i][0]<=pre ){
last = max(last, nums[i][1]);
++i;
}
++ans;
pre = last;
if ( i<nums.size() && nums[i][0]>pre ){
ans = -1;
break;
}
if ( last>=L ) break;
}
if ( ans==-1 || last<L )
cout<<-1<<endl;
else cout<<ans<<endl;
return 0;
}

联想公司福利 1481人发布