#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int n,ans[1010],a[1010],b[1010],sum,ti[1010]; struct node//三元组结构 { int o;//工作编号 int t;//时间 int ab;//在哪个机器 }job[1010]; int cmp(const node &x,const node &y) { return x.t<y.t; } void Johnson() { int i; for(i=1;i<=n;i++)//生成三元组表job if(a[i]<b[i]) { job[i].ab=0; job[i].o=i; job[i].t=a[i]; } else { job[i].ab=1; job[i].o=i; job[i].t=b[i]; } sort(job+1,job+1+n,cmp);//排序(按t由小到大) int l=0,r=n+1; for(i=1;i<=n;i++)//生成最优解 if(job[i].ab==0)ans[++l]=job[i].o; else ans[--r]=job[i].o; } int main() { cin>>n; int i; for(i=1;i<=n;i++) cin>>a[i]; for(i=1;i<=n;i++) cin>>b[i]; Johnson();//生成最优解 for(i=1;i<=n;i++)//计算最少时间 ti[i]=ti[i-1]+a[ans[i]]; sum=ti[1]+b[ans[1]]; for(i=2;i<=n;i++) sum=max(sum,ti[i])+b[ans[i]]; cout<<sum; return 0; }