#include #include #include //#include using std::vector; static long getMaxDotProduct(vector a, vector b) { std::sort(a.begin(), a.end()); std::sort(b.begin(), b.end()); long result = 0; for (int i = 0; i < b.size(); i++) { result = (long) a[i]*b[i]+result; } return result; } //TEST(MaxDotProduct, Max1) { // vector a = { 60, 100, 120 }; // vector b = { 20, 50, 30 }; // ASSERT_EQ(getMaxDotProduct(a, b), 10200); //} // //TEST(MaxDotProduct, Max2) { // vector a = { 23 }; // vector b = { 39 }; // ASSERT_EQ(getMaxDotProduct(a, b), 897); //} // //TEST(MaxDotProduct, Max3) { // vector a = { 1,3,-5 }; // vector b = { -2,4,1 }; // ASSERT_EQ(getMaxDotProduct(a, b), 23); //} int main() { size_t n; std::cin >> n; vector a(n), b(n); for (size_t i = 0; i < n; i++) { std::cin >> a[i]; } for (size_t i = 0; i < n; i++) { std::cin >> b[i]; } std::cout << getMaxDotProduct(a, b) << std::endl; }