#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<ll, ll>
#define fi first
#define sec second
#define ld long double
const ll N = 3e5;
const ll INF = 4e18;
const ll MOD = 1e9 + 7;
int main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int tc = 1;
// cin >> tc;
for(;tc--;){
ll n, m; cin >> n >> m;
vector<pii> a(n + 5);
for(int i = 1; i <= n; i++){
cin >> a[i].fi >> a[i].sec;
}
sort(a.begin() + 1, a.begin() + 1 + n, [&](pii a, pii b){
if(a.sec == b.sec) return a.fi < b.fi;
return a.sec < b.sec;
});
vector<ll> c(m + 5);
for(int i = 1; i <= m; i++){
cin >> c[i];
}
sort(c.begin() + 1, c.begin() + 1 + m, greater<ll>());
ll l = 1, r = min(n, m), ans = 0;
for(;l <= r;){
ll mid = (l + r) / 2;
ll cur = mid;
for(int i = 1; i <= n && cur >= 1;){
while(cur <= mid && i <= n && a[i].fi > c[cur]){
i++;
}
if(i > n) break;
cur--, i++;
}
if(!cur){
ans = mid;
l = mid + 1;
}
else r = mid - 1;
}
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... |