fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. typedef int ll;
  5. #define fo(i, start, end) for (ll i = start; i <= end; i++)
  6. #define pfo(i, end, start) for (ll i = end; i >= start; i--)
  7. #define all(x) x.begin(), x.end()
  8. #define sz(x) (ll)x.size()
  9. #define pb push_back
  10. #define mp make_pair
  11. #define fi first
  12. #define se second
  13. #define sortall(v) sort(all(v))
  14. #define sumv(v) accumulate(all(v), 0LL)
  15. int main(){
  16. ll n;
  17. cin>>n;ll a[n+1]={0};ll b[n+1]={0};unordered_map <ll,ll> a1,b1;
  18. fo(i,1,n){
  19. cin>>a[i];a1[a[i]]++;
  20. }
  21. fo(i,1,n){
  22. cin>>b[i];b1[b[i]]++;
  23. }
  24. sort(a+1,a+n+1);
  25. sort(b+1,b+n+1);
  26. ll ans1 = 1;
  27. fo(i,1,n){
  28. ll u = max(a[i]+b[i],a[i]*b[i]);
  29. ans1 = ans1*u;
  30. }
  31. ll ans2 = 1;
  32. ll first = min(a1[1],b1[1]);
  33. ll second = min(a1[2],b1[2]);
  34. ll p = min(first,second);
  35. fo(i,1,p){
  36. ans2 = 9*ans2;
  37. }
  38. //
  39. a1[1] = a1[1] - p;
  40. a1[2] = a1[2] - p;
  41. b1[1] = b1[1] - p;
  42. b1[2] = b1[2] - p;
  43. vector <ll> newa,newb;
  44. for(auto itr = a1.begin();itr!=a1.end();++itr){
  45. ll g = itr->first;
  46. ll u = itr->second;
  47. fo(i,1,u){
  48. newa.push_back(g);
  49. }
  50. }
  51.  
  52. for(auto itr = b1.begin();itr!=b1.end();++itr){
  53. ll g = itr->first;
  54. ll u = itr->second;
  55. fo(i,1,u){
  56. newb.push_back(g);
  57. }
  58. }
  59.  
  60.  
  61. for(int i=0;i<newa.size();i++){
  62. ll u = max(newa[i]+newb[i],newa[i]*newb[i]);
  63. ans2 = ans2*u;
  64. }
  65.  
  66.  
  67.  
  68. cout<<max(ans1,ans2);
  69.  
  70.  
  71.  
  72.  
  73. return 0;
  74. }
Success #stdin #stdout 0.01s 5328KB
stdin
6
1 1 1 2 2 4
1 1 1 1 2 2
stdout
810