#D. 三个数大值
- 传统题1000ms256MiB
问题描述
给你𝑛n个数,然后选择三个不同位置数相乘最大。
输入
第一行给一个𝑛n (3≤𝑛≤300)(3≤n≤300)。
第二行给𝑛n个数𝑥x(−1000≤𝑥≤1000)(−1000≤x≤1000)。
输出
输出三个数相乘最大值
样例
输入数据 1
5
1 2 3 -1 5
Copy
输出数据 1
30
Copy
提示
选择 2 3 5 ,乘起来为30最大
#include<iostream>
using namespace std;
int main()
{
int n;
long long f1=0,s2=0,t3=0,k1=0,k2=0,temp,result;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>temp;
if(temp>0)
{
if(temp>f1)
t3=s2,s2=f1,f1=temp;
else if(temp>s2)
t3=s2,s2=temp;
else if(temp>t3)
t3=temp;
}
else
{
if(temp<k1)
k2=k1,k1=temp;
else if(temp<k2)
k2=temp;
}
}
result=f1*s2*t3>f1*k1*k2?f1*s2*t3:f1*k1*k2;
cout<<result;
return 0;
}