코딩테스트

백준 연속부분최대곱(c++)

leeeehhjj 2024. 2. 17. 13:47

https://www.acmicpc.net/problem/2670

 

2670번: 연속부분최대곱

첫째 줄은 나열된 양의 실수들의 개수 N이 주어지고, 그 다음 줄부터 N개의 수가 한 줄에 하나씩 들어 있다. N은 10,000 이하의 자연수이다. 실수는 소수점 첫째자리까지 주어지며, 0.0보다 크거나

www.acmicpc.net

#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
 
int N;
double D[10000+10];
void InputData(){
    cin >> N;
    for (int i=0; i<N; i++){
        cin >> D[i];
    }
}
 
double solve() {
    double pMax = 0;
    double m = 0;
    for (int i=0; i<N; i++) {
        pMax = max(pMax * D[i], D[i]);
        m = max(m, pMax);
    }
    return m;
}
 
int main(){
    double ans = -1;
 
    InputData();// 입력받는 부분
 
    // 여기서부터 작성
    ans = solve();
 
    printf("%.3lf\n", ans);// 출력하는 부분
    return 0;
}