제출 #1216881

#제출 시각아이디문제언어결과실행 시간메모리
1216881stdfloatExhibition (JOI19_ho_t2)C++20
0 / 100
0 ms396 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;

#define ff  first
#define ss  second
#define pii pair<int, int>

#define sz(v)	(int)(v).size()
#define all(v)	(v).begin(), (v).end()

int main() {
	ios::sync_with_stdio(false); cin.tie(nullptr);

	int n, m;
	cin >> n >> m;

	pii p[n];
	for (int i = 0; i < n; i++)
		cin >> p[i].ff >> p[i].ss;

	sort(p, p + n);

	vector<int> c(m);
	for (auto &i : c)
		cin >> i;

	sort(c.begin(), c.end());

	pii dp[n];
	int mx = 0;	
	for (int i = 0; i < n; i++) {
		if (p[i].ff > c[m - 1]) continue;

		dp[i].ff = 1; dp[i].ss = lower_bound(all(c), p[i].ff) - c.begin();

		for (int j = 0; j < i; j++) {
			if (p[j].ss <= p[i].ss && dp[j].ss != m - 1) {
				int t = lower_bound(dp[j].ss + 1 + all(c), p[i].ff) - c.begin();
				if (dp[j].ff + 1 > dp[i].ff || (dp[j].ff + 1 == dp[i].ff && t < dp[i].ss)) {
					dp[i].ff = dp[j].ff + 1; dp[i].ss = t;
				}
			}
		}

		// cout << i << ' ' << dp[i].ff << ' ' << dp[i].ss << '\n';

		mx = max(mx, dp[i].ff);
	}

	cout << mx;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...