[编程题]视野争夺
视野争夺
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; }