CF1408D Searchlights(枚举+思维)
#include<bits/stdc++.h> using namespace std; const int maxn=1e6+100; int n,m; int a[maxn],b[maxn]; int c[maxn],d[maxn]; int cnt[maxn]; int main () { scanf("%d%d",&n,&m); for (int i=1;i<=n;i++) scanf("%d%d",a+i,b+i); for (int i=1;i<=m;i++) scanf("%d%d",c+i,d+i); for (int i=1;i<=n;i++) for (int j=1;j<=m;j++) if (a[i]<=c[j]) cnt[c[j]-a[i]]=max(cnt[c[j]-a[i]],d[j]-b[i]+1); int ans=1e9; int Max=0; for (int dx=maxn-1;dx>=0;dx--) { Max=max(Max,cnt[dx]); ans=min(ans,dx+Max); } printf("%d\n",ans); }