样例过了,但全部WA
查看原帖
样例过了,但全部WA
402384
orgn楼主2021/10/24 09:49
#include <bits/stdc++.h>
using namespace std;
int n, m1, m2, q[100005];
struct node {
	int a, b;
} s1[100005], s2[100005];
long long ans(int f) {
	long long cnt1 = 0, cnt2 = 0;
	for (int i = 1; i <= n; i++) q[i] = 0;
	for (int i = 1; i <= m1; i++) {
		for (int j = 1; j <= f; j++) {
			if (q[j] < s1[i].a) {
				cnt1++;
				q[j] = s1[i].b;
				break;
			}
		}
	}
	for (int i = 1; i <= m2; i++) {
		for (int j = f+1; j <= n; j++) {
			if (q[j] < s2[i].a) {
				cnt2++;
				q[j] = s2[i].b;
				break;
			}
		}
	}
	return cnt1+cnt2;
}
int main () {
	cin >> n >> m1 >> m2;
	for (int i = 1; i <= m1; i++) cin >> s1[i].a >> s1[i].b;
	for (int i = 1; i <= m2; i++) cin >> s2[i].a >> s2[i].b;
	int l = 1, r = n;
	while (l + 1 < r) {
		int mid = (l + r) / 2;
		long long ll = ans(l), rr = ans(mid);
		if (ll < rr) {
			l = mid;
		} else {
			r = mid - 1;
		}
	}
	cout << max(ans(l), ans(r)) << endl;
	return 0;
}
2021/10/24 09:49
加载中...