# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1216902 | stdfloat | Exhibition (JOI19_ho_t2) | C++20 | 0 ms | 0 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].ss >> p[i].ff;
sort(p, p + n);
vector<int> c(m);
for (auto &i : c)
cin >> i;
sort(all(c));
pii dp[n];
int mx = 0;
for (int i = 0; i < n && p[i].ss <= c[m - 1]; i++) {
dp[i].ff = 1; dp[i].ss = lower_bound(all(c), p[i].ss) - c.begin();
for (int j = 0; j < i; j++) {
if (dp[j].ss + 1 < m) {
int t = lower_bound(dp[j].ss + 1 + all(c), p[i].ss) - 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;
}
}
}
mx = max(mx, dp[i].ff);
}
cout << mx;
}