[编程题]视野争夺

视野争夺

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;
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务