114514

Papyrus在审判你  •  1个月前


#include <bits/stdc++.h>
using namespace std;

struct planein {
	int ccome;
	int cleave;
};

struct planeout {
	int ocome;
	int oleave;
};

bool rule1(planein a, planein b) {
	return a.ccome < b.ccome;
}

bool rule2(planeout a, planeout b) {
	return a.ocome < b.ocome;
}

int main() {
	int n;
	cin >> n;
	int c, outc;
	cin >> c >> outc;
	planein a[c];
	planeout b[outc];

	for (int i = 0; i < c; i++) {

		int f, t;
		cin >> f >> t;
		a[i].ccome = f;
		a[i].cleave = t;
	}

	for (int i = 0; i < outc; i++) {

		int f, t;
		cin >> f >> t;
		b[i].ocome = f;
		b[i].oleave = t;
	}

	sort(a, a + c, rule1);
	sort(b, b + outc, rule2);
	int max = 0;

	for (int i = 0; i <= n; i++) {

		int guo = i;
		int wai = n - i;
		int sum = 0;

		if (guo != 0) {
			int lang[guo] = {0};

			for (int j = 0; j < c; j++) {

				if (j < guo) {
					lang[j] = a[j].cleave;
					sum++;
				} else {
					for (int l = 0; l < guo; l++) {

						if (a[j].ccome > lang[l]) {
							lang[l] = a[j].cleave;
							sum++;
							break;
						}
					}
				}
			}
		}

		if (wai != 0) {
			int wlang[wai] = {0};

			for (int k = 0; k < outc; k++) {

				if (k < wai) {
					wlang[k] = b[k].oleave;
					sum++;
				} else {
					for (int m = 0; m < wai; m++) {

						if (b[k].ocome > wlang[m]) {
							wlang[m] = b[k].oleave;
							sum++;
							break;
						}
					}
				}
			}
		}

		if (sum > max) {
			max = sum;
		}
	}

	cout << max;
	return 0;
}

评论:

请先登录,才能进行评论