1 #include <algorithm>
2 #include <cstdio>
3
4 using namespace std;
5
6 const int N(1000+15);
7 int n,a[N],b[N];
8
9 struct Node
10 {
11 int num,tim,a_b;//工作编号,用时,机器号
12 bool operator < (const Node &x) const
13 { return tim<x.tim; }//最短时间
14 Node(int num=0,int tim=0,int a_b=0):
15 num(num),tim(tim),a_b(a_b){}
16 }job[N];
17 int ans,num[N],sum[N];
18 void Johnson()
19 {
20 for(int i=1;i<=n;i++)
21 if(a[i]<b[i]) job[i]=Node(i,a[i],0);
22 else job[i]=Node(i,b[i],1);
23 sort(job+1,job+n+1);
24 for(int l=0,r=n+1,i=1;i<=n;i++)//得到最优解
25 if(job[i].a_b==0) num[++l]=job[i].num;
26 else num[--r]=job[i].num;
27 }
28
29 int main()
30 {
31 scanf("%d",&n);
32 for(int i=1;i<=n;i++) scanf("%d",a+i);
33 for(int i=1;i<=n;i++) scanf("%d",b+i);
34 Johnson();
35 for(int i=1;i<=n;i++) sum[i]+=sum[i-1]+a[num[i]];
36 ans=sum[1]+b[num[1]];
37 for(int i=2;i<=n;i++) ans=max(sum[i],ans)+b[num[i]];
38 printf("%d\n",ans);
39 return 0;
40 }