알고리즘/SWEA

[SWEA 4796] 의석이의 우뚝 선 산

히더 2018. 7. 26. 18:01

출처 : https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWS2h6AKBCoDFAVT



#include <iostream>

#include <algorithm>
#include <memory.h>
using namespace std;
 
long long L, R, N, result, flag;
long long map[50000];
 
int main()
{
    long long T, t = 1;
    cin >> T;
    while (T--)
    {
        cin >> N; result = 0; flag = 0;
        memset(map, 0, sizeof(map));
        for (long long i = 0; i < N;i++) cin >> map[i];
        L = 0; R = 0;
        for (long long i = 1; i < N; i++)
        {
            if (R > 0 && L == 0 && map[i] > map[i - 1]) R = 0;
            if (L > 0 && R > 0 && map[i] > map[i - 1])
            {
                result += L*R; L = 0; R = 0;
            }
 
            if (map[i] > map[i - 1]) L++;
             
            if (map[i] < map[i - 1])R++;
        }
        if (L > 0 && R > 0) result += L*R;
 
        cout << "#" << t++ << " " << result << endl;
    }
    return 0;
}