A 队友招募

注意到取最大值时只可能在边缘取。那么就可以写出AC代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m;
int k[200007],b[200007],c[200007];
vector<int>x,y;
signed main(){
    cin>>n>>m;
    for(int i=0;i<n;i++)cin>>k[i];
    for(int i=0;i<n;i++)cin>>b[i];
    for(int i=0;i<m;i++)cin>>c[i];
    for(int i=0;i<n;i++){
        x.push_back(c[0]*k[i]+b[i]);
        y.push_back(c[m-1]*k[i]+b[i]);
    }
    sort(x.begin(),x.end());
    sort(y.begin(),y.end());
    int maxx=max(x[n-1]+x[n-2],y[n-1]+y[n-2]);
    cout<<maxx<<'\n';
}