#include<iostream> #include<algorithm> #include<cstring> using namespace std; struct commodity { int type; int taste; int flag; }com[55]; int n; void check(int j) { for(int i=0;i<n;i++) { if(com[i].type==com[j].type) com[i].flag=1; } } int cmp(commodity com1,commodity com2) { return com1.taste<com2.taste; } int main() { int j; memset(com,0,sizeof(commodity)*55); cin>>n; for(int i=0;i<n;i++) cin>>com[i].type; for(int i=0;i<n;i++) cin>>com[i].taste; sort(com,com+n,cmp); for(int i=0;i<n;i++) { if(com[i].taste>=0) { j=i; break; } } int x=0,y=0; for(int i=j;i<n;i++) { if(com[i].flag==0) { x++; check(i); } y+=com[i].taste; } long long ans,temp=0; ans=x*y; for(int i=j-1;i>=0;i--) { int x1,y1; x1=x;y1=y; if(com[i].flag==0) { x1++; check(i); } y1+=com[i].taste; temp=x1*y1; if(temp>ans) { ans=temp; x=x1; y=y1; } } cout<<ans; return 0; }