7-98 Number
分数 5
全屏浏览题目
切换布局
作者 郭天宸
单位 山东大学(威海)
_October has a question:
You are given n integers a1,a2,…,an. Find the maximum value of max(al,al+1,…,ar)⋅min(al,al+1,…,ar)over all pairs (l,r) of integers for which 1≤l<r≤n.
INPUT:
The first line contains a single integer n(2≤n≤103) .
The second line contains n integers a1,a2,…,an(1≤ai≤106).
OUTPUT:
Please print a single integer — the maximum possible value of the product from the statement.
SAMPLE INPUT1:
3
2 4 3
SAMPLE OUTPUT1:
12
Note:
Let f(l,r)=max(al,al+1,…,ar)⋅min(al,al+1,…,ar).
In the first test case,
f(1,2)=max(a1,a2)⋅min(a1,a2)=max(2,4)⋅min(2,4)=4⋅2=8.
f(1,3)=max(a1,a2,a3)⋅min(a1,a2,a3)=max(2,4,3)⋅min(2,4,3)=4⋅2=8.
f(2,3)=max(a2,a3)⋅min(a2,a3)=max(4,3)⋅min(4,3)=4⋅3=12.
So the maximum is f(2,3)=12.
SAMPLE INPUT2:
4
3 2 3 1
SAMPLE OUTPUT2:
6
代码如下:
#include <stdio.h>
int main(){
long n = 0;
long arr[1000];
long res = 0,num;
scanf("%ld",&n);
for(int i = 0; i< n;i++)
{
scanf("%ld",&arr[i]);
}
for( int i=0;i<n;i++)
{
for( int j=i+1;j<n;j++)
{
long min =arr[i];
long max =arr[i];
for(int k=i;k<=j;k++){
if(arr[k] > max){
max = arr[k];
}
if(arr[k] < min){
min = arr[k];
}
}
if(min * max > res){
res = min*max;
}
// printf("%d %d %d",min,max,res);
}
}
printf("%ld",res);
return 0;
}