Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

CPPREA12 - Re-arrang Array 12

Cho mảng A[] gồm n phần tử gồm các số âm và dương. Hãy tìm giá trị lớn nhất tích các phần tử của tất cả các dãy con liên tục trong mảng A[].

Ví dụ với mảng A[] = {6, -3, - 10, 0, 2 } ta có kết quả là 180 tương ứng với tích các phần tử của dài dãy con {6, -3, -10}.

Input

Dòng đầu tiên đưa vào số lượng bộ test T.

Những dòng kế tiếp đưa vào T bộ test. Mỗi bộ test gồm hai phần: phần thứ nhất đưa vào số lượng phần tử của mảng N; phần thứ hai đưa vào n số A[i]; các số được viết cách nhau một vài khoảng trống. 

T, n, A[i] thỏa mãn ràng buộc: 1≤ T ≤100; 1≤ n ≤100; -200 ≤ A[i] ≤200 . 

Output

Đưa ra kết quả mỗi test theo từng dòng , kết quả thỏa mãn nhỏ hơn 10^18.

Example

Input Output
3
5
6 -3 -10 0 2
6
2 3 4 5 -1 0
10
8 -2 -2 0 8 0 -6 -8 -6 -1
180
120
288

Được gửi lên bởi:adm
Ngày:2019-10-25
Thời gian chạy:1s
Giới hạn mã nguồn:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Ngôn ngữ cho phép:C C++ 4.3.2 CPP CPP14

hide comments
2020-08-31 05:15:10
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

ll maxProduct(ll *arr, int n){
ll minVal=arr[0];
ll maxVal=arr[0];
ll maxPro = arr[0];
for(int i=1;i<n;i++){
if(arr[i]<0){
swap(maxVal,minVal);
}
maxVal=max(arr[i], maxVal*arr[i]);
minVal=min(arr[i], minVal*arr[i]);
maxPro = max(maxPro,maxVal);
}
return maxPro;
}

int main(){
int t;
cin>>t;
while(t--){
int n;
cin>>n;
ll a[n+5];
for(int i=0;i<n;i++) cin>>a[i];
cout<<maxProduct(a,n)<<endl;
}
return 0;
}
2019-10-27 16:23:05
Mấy bạn viết đề k có tâm thôi mà . Quen dần đi các bạn ơi .
2019-10-26 09:50:45
nhìn giới hạn với test buồn kười :)
2019-10-26 09:50:09
a[i]>=1 mà sao test lại có a[i]<=0 vậy ?

Last edit: 2019-10-26 09:57:20
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.