#include <iostream> #include <vector> #include <algorithm> using namespace std; const int N=100010; typedef pair<int ,int>PII; vector<PII>segs; void merge(vector<PII> &segs) { vector<PII> res; /*1 2 2 4 5 6 7 8 7 9*/ sort(segs.begin(), segs.end()); int st = -2e9, ed = -2e9;// for (auto seg : segs) if (ed < seg.first) { if (st != -2e9) res.push_back({st, ed}); // 第二次循环 第一个 1,4 第四次循环 第二个5,6 st = seg.first, ed = seg.second; // 第一次循环 st=1 ed=2 // 第三次循环 5 6 //第四次循环7 8 } else ed = max(ed, seg.second); // 第二次循环ed=4 // 第五次循环 9 if (st != -2e9) res.push_back({st, ed});// 第三个7,9 segs = res; } int main(){ int n; cin>>n; for(int i=0;i<n;i++){ int l,r; cin>>l>>r; segs.push_back({l,r}); } merge(segs); for(auto seg:segs){ cout<<seg.first<<" "<<seg.second<<endl; } cout<<segs.size(); } /*5 1 2 2 4 5 6 7 8 7 9*/
算法从0开始 C++区间合并
最新推荐文章于 2024-11-04 16:58:15 发布