From 93af6eff6a9f299d18b4a54331321b555e7bd11b Mon Sep 17 00:00:00 2001 From: hanyixuanten <105723997+hanyixuanten@users.noreply.github.com> Date: Thu, 10 Sep 2026 21:12:08 +0800 Subject: [PATCH] new file: P7913.cpp --- P7913.cpp | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 P7913.cpp diff --git a/P7913.cpp b/P7913.cpp new file mode 100644 index 0000000..cd4c62d --- /dev/null +++ b/P7913.cpp @@ -0,0 +1,68 @@ +#include +using namespace std; +int n, m1, m2; +pair plane1[100005], plane2[100005]; +int f1[100005], f2[100005]; +int main() +{ + scanf("%d%d%d", &n, &m1, &m2); + for (int i = 1; i <= m1; i++) + { + scanf("%d%d", &plane1[i].first, &plane1[i].second); + } + sort(plane1 + 1, plane1 + m1 + 1, [](pair x, pair y) + { return x.first < y.first; }); + for (int i = 1; i <= m2; i++) + { + scanf("%d%d", &plane2[i].first, &plane2[i].second); + } + sort(plane2 + 1, plane2 + m2 + 1, [](pair x, pair y) + { return x.first < y.first; }); + priority_queue, vector>, greater>> q; + priority_queue, greater> freeQ; + for (int i = 1; i <= n; i++) + freeQ.push(i); + for (int i = 1; i <= m1; ++i) + { + while (!q.empty() && q.top().first <= plane1[i].first) + freeQ.push(q.top().second), q.pop(); + if (!freeQ.empty()) + { + q.push({plane1[i].second, freeQ.top()}); + f1[freeQ.top()]++; + freeQ.pop(); + } + } + for (int i = 1; i <= n; i++) + { + f1[i] += f1[i - 1]; + } + while (!freeQ.empty()) + freeQ.pop(); + while (!q.empty()) + q.pop(); + for (int i = 1; i <= n; i++) + freeQ.push(i); + for (int i = 1; i <= m2; ++i) + { + while (!q.empty() && q.top().first <= plane2[i].first) + freeQ.push(q.top().second), q.pop(); + if (!freeQ.empty()) + { + q.push({plane2[i].second, freeQ.top()}); + f2[freeQ.top()]++; + freeQ.pop(); + } + } + for (int i = 1; i <= n; i++) + { + f2[i] += f2[i - 1]; + } + int maxres = 0; + for (int i = 0; i <= n; ++i) + { + maxres = max(maxres, f1[i] + f2[n - i]); + } + printf("%d\n", maxres); + return 0; +} \ No newline at end of file