E - E
Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u
Submit
Status
Practice
CodeForces 934A
use MathJax to parse formulas
Description
“年”是一个生活在海洋深处的怪物。每年,它都出现在陆地上,吞噬牲畜甚至是人。为了让怪物离开,人们用红色,光线和爆炸的声音填满他们的村庄,所有这些都吓跑了怪物。
小汤米有 n 个灯笼,大班班有灯笼。汤米的灯具有亮度a1,a2,…,an,而Banban的亮度分别为亮度b1,b2,…,bm。
汤米打算藏一个灯笼,然后班班选择汤米的一个没藏起来的灯笼和一个他自己的灯笼组成一对。这对灯笼的亮度将是两个灯笼亮度的乘积。
Tommy想让乘积尽可能小,而Banban试图让乘积尽可能大。
Input
第一行包含两个整数n和m(2≤n,m≤50)。
第二行包含n个整数a1,a2,…,an。
第三行包含m个整数b1,b2,…,bm。
整数范围从-10 9 到 10 9。
Output
输出单个整数——所选灯笼对的亮度。
Sample Input
Input
2 2
20 18
2 14
Output
252
Input
5 3
-1 0 1 2 3
-1 0 1
Output
2
Hint
在第一个例子中,Tommy将隐藏20,Banban将从Tommy选择18,从他自己选择14。
在第二个例子中,Tommy将隐藏3,Banban将从Tommy中选择2,从他自己选择1。
思路:因为数据量比较小,所以可以暴力,,题意是tommy隐藏一个自己的数字,banban从tommy剩下的数字里挑一个和自己的所有数字相乘找最大的,用两重循环,第一重tommy隐藏那个乘积最大的数字,,第二重找出剩余的所有数中乘积的最大值
代码:
#include <iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#define LL long long
using namespace std;
LL a[55],b[55];
int main()
{
int n,m,flag;
LL MAX=-1e18,cMAX=-1e18; //数据量最大是10的9次方
cin>>n>>m;
for(int i=0; i<n; i++)
cin>>a[i];
for(int j=0; j<m; j++)
cin>>b[j];
for(int i=0; i<n; i++)
for(int j=0; j<m; j++)
if(a[i]*b[j]>MAX)
{
MAX=a[i]*b[j];
flag=i;
}
for(int i=0; i<n; i++)
{
if(i==flag)
continue;
for(int j=0; j<m; j++)
if(a[i]*b[j]>cMAX)
cMAX=a[i]*b[j];
}
cout<<cMAX<<endl;
return 0;
}