题目描述 Description
给定n个正整数,请你在这n个正整数中找出3个数,要保证3个数之和不超过一个给定的值w,则能够找出来的3个数的乘积最大是多少?如果没有符合条件的3个数,则输出-1。
输入描述 Input Description
输入有两行, 第一行输入两个个正整数n和w; 第二行输入n个正整数。
输出描述 Output Description
输出满足条件的3个数乘积的最大值。(没有符合条件的数则输出-1)
样例输入 Sample Input
5 15
3 9 7 5 3
样例输出 Sample Output
105
数据范围及提示 Data Size & Hint
n<=100,w<=200000。
输入的每个正整数不超过100000。
#include <iostream>
#include <algorithm>
using namespace std;
int w,n;
int pd[105];
int maxn=-1;
int main() {
cin>>n>>w;
for(int i=1;i<=n;i++){
cin>>pd[i];
}
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
for(int k=j+1;k<=n;k++){
if(pd[i]+pd[j]+pd[k]<=w&&pd[i]*pd[j]*pd[k]>maxn){
maxn=pd[i]*pd[j]*pd[k];
}
}
}
}
cout<<maxn;
return 0;
}
感谢大佬们的指导!谢谢大佬们!