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 |