// #pragma GCC optimize("O3")
// #pragma GCC optimization("Ofast,unroll-loops")
// #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ll long long
#define FOR(i, l, r) for (int i = (l); i <= (r); i++)
#define FOD(i, r, l) for (int i = (r); i >= (l); i--)
#define fi first
#define se second
#define pii pair<int, int>
const ll mod = 1e9 + 7;
const int MAXN = 1e5 + 5;
const ll oo = 1e18+7;
const int base = 0;
int n, m;
pii a[MAXN];
int c[MAXN];
bool cmp(pii a, pii b){
return a.se<b.se;
}
pii f[MAXN];
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
// freopen("test.txt", "r", stdin);
// freopen("o2.out", "w", stdout);
// if(fopen(".inp", "r")){
// freopen(".inp", "r", stdin);
// freopen(".out", "w", stdout);
// }
cin >> n >> m;
FOR(i, 1, n){
cin >> a[i].fi >> a[i].se;
}
FOR(i, 1, m){
cin >> c[i];
}
sort(c+1, c+1+m);
sort(a+1, a+1+n, cmp);
c[m+1]=oo;
FOR(i, 1, n){
int x=lower_bound(c+1, c+1+m+1, a[i].fi)-c;
pii ans=f[i-1];
FOR(j, 0, i-1){
int y=f[j].se;
int xx=max(x, y+1);
if(xx<=m){
if(ans.fi<f[j].fi+1){
ans={f[j].fi+1, xx};
}
else if(ans.fi==f[j].fi+1){
if(ans.se>xx){
ans={f[j].fi+1, xx};
}
}
}
}
f[i]=ans;
}
cout << f[n].fi;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |