1. 程式人生 > 其它 >Codeforces Beta Round #98 (Div. 2) C題

Codeforces Beta Round #98 (Div. 2) C題

題目

https://codeforces.com/contest/137/problem/C

問題重述

找到被覆蓋的區間一共有多少個
\([3,4]\)\([1,5]\)覆蓋但是不被\([3,5]\)覆蓋

思路

先按第一個下標從小到大排序
雙指標。後面的被前面的覆蓋就加加答案,不然更新覆蓋區間

程式碼

    #include <iostream>
    #include <cstring>
    #include <algorithm>
    #include<vector>
     
    using namespace std;
    int n;
     
    int main()
    {
        cin >> n;
        vector<pair<int, int>>a(n);
        for (int i = 0; i < n; i ++ ) scanf("%d %d", &a[i].first, &a[i].second);
        sort(a.begin(), a.end());
        
        int ans = 0;
        int l = a[0].first, r = a[0].second;
        for(int i = 1; i < n; ++ i)
        {
            if(a[i].first > l && a[i].second < r) ans ++;
            else
            {
                l = a[i].first, r = a[i].second;
            }
        }
        cout << ans;
        return 0;
    }

通過連結
https://codeforces.com/contest/137/submission/137569901