알고리즘

[알고리즘] 백준 2096 - 내려가기

blueberrysoda 2024. 7. 18. 23:52
#include <iostream>
using namespace std;

int N;
int Arr[3];
int Max[2][3];
int Min[2][3];

int main(){
    cin >> N;

    cin >> Arr[0] >> Arr[1] >> Arr[2];
    Max[0][0] = Min[0][0] = Arr[0];
    Max[0][1] = Min[0][1] = Arr[1];
    Max[0][2] = Min[0][2] = Arr[2];

    for(int i=1; i<N; i++){
        cin >> Arr[0] >> Arr[1] >> Arr[2];

        Max[1][0] = max(Max[0][0], Max[0][1]) + Arr[0];
        Max[1][1] = max(Max[0][0], max(Max[0][1], Max[0][2])) + Arr[1];
        Max[1][2] = max(Max[0][1], Max[0][2]) + Arr[2];

        Min[1][0] = min(Min[0][0], Min[0][1]) + Arr[0];
        Min[1][1] = min(Min[0][0], min(Min[0][1], Min[0][2])) + Arr[1];
        Min[1][2] = min(Min[0][1], Min[0][2]) + Arr[2];

        Max[0][0] = Max[1][0];
        Max[0][1] = Max[1][1];
        Max[0][2] = Max[1][2];

        Min[0][0] = Min[1][0];
        Min[0][1] = Min[1][1];
        Min[0][2] = Min[1][2];
    }

    cout << max(Max[0][0], max(Max[0][1], Max[0][2])) << " ";
    cout << min(Min[0][0], min(Min[0][1], Min[0][2])) << "\n";
    return 0;
}