#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int dp[1<<17];
int main(){
// ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int n, m, ans = 0;
cin>>n>>m;
vector<pair<int,int>> vec(n);
vector<int> c(m);
for (int i=0;i<n;i++)
cin>>vec[i].second>>vec[i].first;
sort(begin(vec), end(vec));
for (int i=0;i<m;i++)
cin>>c[i];
sort(begin(c), end(c));
for (int i=1;i<=n;i++)
dp[i] = 2e9;
dp[0] = -1;
for (auto [b, a] : vec){
int k = upper_bound(begin(c), end(c), a - 1) - begin(c);
int u = upper_bound(dp, dp + n + 1, k) - dp;
for (int i=n;i>=1;i--){
if (dp[i] > max(k, dp[i-1] + 1))
dp[i] = max(k, dp[i-1] + 1);
if (dp[i] < m)
ans = max(ans, i);
}
}
cout<<ans<<'\n';
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |