Codeforces Beta Round #98 (Div. 2) C題
阿新 • • 發佈:2021-12-01
題目
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