본문 바로가기

백준 문제 풀이

백준 25214번 - 크림 파스타(C++)

728x90

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

최솟값을 저장해두고, 현재 들어오는 값에서 뺀 값과, 이전 정답 값을 비교해가며 정답을 출력하면 되는 문제이다. 아이디어를 떠올리는 것이 생각보다 어려웠던 문제

#include <iostream>
#include <vector>
using namespace std;

int dp[200001];

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int N; cin >> N; 

    int minValue = 1000000001;
    int maxValue = 0;
    for(int i = 0; i < N; i++){
        int value; cin >> value;

        maxValue = max(maxValue, value);
        minValue = min(minValue, value);

        if(i == 0) cout << 0 << ' ';
        else{
            dp[i] = max(dp[i - 1], value - minValue);

            cout << dp[i] << ' ';
        }
    }
}