본문 바로가기

Algorithm

(C++) - 백준(BOJ) 2846번 : 오르막길

반응형

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

 

2846번: 오르막길

문제 상근이는 자전거를 타고 등교한다. 자전거 길은 오르막길, 내리막길, 평지로 이루어져 있다. 상근이는 개강 첫 날 자전거를 타고 가면서 일정 거리마다 높이를 측정했다. 상근이는 가장 큰 오르막길의 크기를 구하려고 한다. 측정한 높이는 길이가 N인 수열로 나타낼 수 있다. 여기서 오르막길은 적어도 2개의 수로 이루어진 높이가 증가하는 부분 수열이다. 오르막길의 크기는 부분 수열의 첫 번째 숫자와 마지막 숫자의 차이이다. 예를 들어, 높이가 다음과 같은

www.acmicpc.net

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
    int n;
    int p[1001];
    int ans = 0;
    int l = 1, r = 1;
    cin >> n;
    for (int i = 1; i <= n; i++)
        cin >> p[i];
    for (int i = 1; i <= n - 1; i++)
    {
        if (p[i] < p[i + 1])//오르막길
        {
            r++;
            ans = max(ans, p[r] - p[l]);
        }
        else if(p[i]>=p[i+1])//내리막길 발견
        {
            l = i+1;
            r = i+1;
        }
    }
    cout << ans << '\n';
}
cs