关注
第三道,90% #include <iostream>
#include <cstdio>
#include <cstring>
#include <cctype>
#include <vector>
#include <string>
#include <map>
#include <set>
#include <cmath>
#include <iterator>
#include <algorithm>
#include <functional>
using namespace std;
const int MAXN = 20005;
struct segment {
int left, right;
int mx, mark;
};
int n, k;
vector<double> a, v_left, v_right;
segment tree[MAXN << 2];
void push_up(int rt)
{
tree[rt].mx = max(tree[rt << 1].mx, tree[rt << 1 | 1].mx);
}
void push_down(int rt)
{
if (tree[rt].mark) {
tree[rt << 1].mx += tree[rt].mark;
tree[rt << 1 | 1].mx += tree[rt].mark;
tree[rt << 1].mark += tree[rt].mark;
tree[rt << 1 | 1].mark += tree[rt].mark;
tree[rt].mark = 0;
}
}
void build(int l, int r, int rt)
{
tree[rt].left = l;
tree[rt].right = r;
tree[rt].mark = 0;
if (l == r)
tree[rt].mx = 0;
else {
int mid = (l + r) >> 1;
build(l, mid, rt << 1);
build(mid + 1, r, rt << 1 | 1);
push_up(rt);
}
}
void modify(int l, int r, int rt)
{
if (l <= tree[rt].left && tree[rt].right <= r) {
tree[rt].mx += 1;
tree[rt].mark += 1;
return;
}
push_down(rt);
int mid = (tree[rt].left + tree[rt].right) >> 1;
if (l <= mid) modify(l, r, rt << 1);
if (r >= mid + 1) modify(l, r, rt << 1 | 1);
push_up(rt);
}
int query(int l, int r, int rt)
{
if (l <= tree[rt].left && tree[rt].right <= r)
return tree[rt].mx;
push_down(rt);
int ans = 0, mid = (tree[rt].left + tree[rt].right) >> 1;
if (l <= mid) ans = max(ans, query(l, r, rt << 1));
if (r >= mid + 1) ans = max(ans, query(l, r, rt << 1 | 1));
return ans;
}
int main()
{
// freopen("in.txt", "r", stdin);
cin >> n >> k;
for (int i = 0; i < n; i++) {
double l, r;
cin >> l >> r;
v_left.push_back(l);
v_right.push_back(r);
a.push_back(l);
a.push_back(r);
}
sort(a.begin(), a.end());
a.erase(unique(a.begin(), a.end()), a.end());
build(1, a.size(), 1);
for (int i = 0; i < n; i++) {
int l = lower_bound(a.begin(), a.end(), v_left[i]) - a.begin() + 1;
int r = lower_bound(a.begin(), a.end(), v_right[i]) - a.begin() + 1;
modify(l, r - 1, 1);
}
int left = 0, right = 0;
vector<pair<double, double>> ans;
for (int i = 1; i <= (int)a.size(); i++) {
int q = query(i, i, 1);
if (q >= k) {
if (left == 0)
left = i, right = i;
else
right = i;
}
else {
if (left != 0) {
ans.push_back(make_pair(a[left - 1], a[right]));
left = 0;
}
}
}
cout << ans.size() << endl;
for (auto p: ans)
cout << p.first << " " << p.second << endl;
return 0;
}
查看原帖
点赞 评论
相关推荐
牛客热帖
更多
- 1... 2025的主旋律是蛰伏,落寞,遗憾1.3W
- 2... 杂记近期所面试的三家中小厂8204
- 3... 岁末论道:谁才是牛客 2025 最强修仙者?6836
- 4... 圣诞节用 AI 做个牛客运营翻翻乐!(含代码)5469
- 5... 选择即命运—2025年度总结5232
- 6... 从H200解禁评估:国资算力平台还值得应届就业吗?4197
- 7... 大学废物离开优绩主义之后发现外面根本没下雨4197
- 8... 我只是一个脆弱的人3452
- 9... 互联网实习求职的黑话和timeline,你所需要知道的……3312
- 10... 壕壕壕,京东发7个月年终,此生要做东孝子2869
正在热议
更多
# 牛客2025仙途报告 #
1488次浏览 65人参与
# 你面试体验感最差/最好的公司 #
19614次浏览 326人参与
# 2025年终总结 #
174964次浏览 2964人参与
# 秋招落幕,你是He or Be #
13768次浏览 267人参与
# 中美关税战对我们有哪些影响 #
49918次浏览 392人参与
# 一人说一个提前实习的好处 #
12110次浏览 215人参与
# 中美关系回暖,你会选择出海吗? #
13910次浏览 141人参与
# 今年你最想重开的一场面试是? #
4663次浏览 72人参与
# 重来一次,你会对开始求职的自己说 #
6529次浏览 164人参与
# 实习没事做是福还是祸? #
17702次浏览 262人参与
# 机械制造秋招总结 #
97282次浏览 878人参与
# 找工作,行业重要还是岗位重要? #
85549次浏览 1698人参与
# 团建是“福利”还是是 “渡劫” #
7666次浏览 155人参与
# 工作中听到最受打击的一句话 #
7416次浏览 122人参与
# 考公VS就业,你怎么选? #
88038次浏览 496人参与
# 你小心翼翼的闯过多大的祸? #
11468次浏览 164人参与
# 哪些行业值得去? #
14346次浏览 74人参与
# 礼物开箱Plog #
965次浏览 35人参与
# 比亚迪工作体验 #
74880次浏览 282人参与
# 大厂VS公务员你怎么选 #
74957次浏览 681人参与