Codeforces Global Round 3 B

比赛的时候一直在想怎么删航线A和航线B的航班才能最优,赛后才知道原来枚举删除个数,取max就好了,越来越菜了。

 #include<bits/stdc++.h>
 using namespace std;
 #define fuck(x) cout<<#x<<"     "<<x<<endl;
 const int maxn=2e5+10;
 int a[maxn],b[maxn],n,m,ta,tb,k,ans;
 int main()
 {
     ans=0;
     scanf("%d%d%d%d%d",&n,&m,&ta,&tb,&k);
     for(int i=1;i<=n;i++) scanf("%d",&(a[i])),a[i]+=ta;
     for(int i=1;i<=m;i++) scanf("%d",&(b[i]));
     for(int i=0;i<=k;i++)
     {
        
         int pos=lower_bound(b+1,b+m+1,a[1+i])-b;
         if(pos+(k-i)-1>=m||i>=n)
         {
             printf("-1
");
             return 0;
         }
         ans=max(ans,b[pos+k-i]+tb);
     }
     printf("%d
",ans);
     return 0;
 }
原文地址:https://www.cnblogs.com/eason9906/p/11754758.html