본문 바로가기
코드포스/div2

div2 - Cherry

by kcj3054 2021. 7. 30.

Cherry

  • 문제 설명 :
    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.

=> 같은 범위에서 max, min 찾아서 결과값 maximumValue인데 그 값이 최대가 되도록 해야한다

틀린 이유 : max를 볼때 이값의 범위를 보지도 않고 일단 주어진 배열 a에서 최대값이라고 가정을 해버렸다
검증을 하지않고 넘어가니 틀렸따

=> 풀이 :
이런류의 문제들은 max min이 있을경우 하나를 고정시켜야한다.

여기서 만약 10 100 10 이있다고 가정할때
여기서 "100"을 최대라고 가정하면 주위에 10이 최소이다 최소는 더 커질 수는없다 더 작아질 수는 있다
결론 -> 길이가 3인 수열을 볼 필요는 없다 2인 수열이면 충분하다 길이가 2인 부분수열을 모두 보면된다

코드 (길이가 2인 수열 비교)

for (int i = 0; i < v.size() - 1; i++) {
            if (v[i] < v[i + 1]) {
                M = v[i + 1];
                m = v[i];
            }
            else {
                M = v[i]; m = v[i + 1];
            }
            tmp = m * M;

            if (ans < tmp) ans = tmp;

'코드포스 > div2' 카테고리의 다른 글

A. Find The Array  (0) 2021.08.09
B. Two Tables  (0) 2021.08.02
B. Gregor and the Pawn Game  (0) 2021.08.02
A. PizzaForces  (3) 2021.07.31