ケーキの個数は (A+1)(B+1) 個なのでTLE. そこで,イチゴが1つ以上乗っているケーキの方だけ注目する. これは\(N\)個.
イチゴの座標が与えられたとき,どのケーキに乗るのかは, binary search で求まる.
各ケーキ毎にイチゴの個数を数えるが,それを直接配列で持つとMLE であるから, map : 座標 -> 個数 を使って求める.
合計で\(O(N log N)\).
使っている記号,マクロ等 "https://ecsmtlir.hatenablog.com/entry/2022/12/23/131925"
int main() {
ll w,h ; cin >> w >> h;
ll n; cin >> n;
vll p(n), q(n);
rep(i,n) cin >> p[i] >> q[i];
ll a; cin >> a;
vll va(a);
va.push_back(0);
rep(i,a) {
ll x; cin >> x;
va.push_back(x);
}
va.push_back(w);
ll b; cin >> b;
rep(i,b){
ll y; cin >> y;
}
map<pll,ll> mp;
rep(i,n){
auto it0 = lower_bound(all(va), p[i]);
ll j0 = it0 - va.begin();
mp[{j0, j1}]++;
}
ll mi = INFL, ma = -INFL;
for(auto [s,t]: mp){
chmax(ma, t);
chmin(mi, t);
}
if(mp.size() < (a+1)*(b+1)) mi = 0;
cout << mi << " " << ma << endl;
return 0;
}