안녕하세요. 오늘은 데이터 스트릭으로 섬을 만들 거예요.

문제

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

아이디어

수가 12개밖에 없으므로 아무거나 하면 됩니다.
저는 i,j로 두개의 점을 잡은 다음 그 사이의 최솟값이 arr[i-1]과 arr[j+1]보다 큰지 확인했습니다.

소스코드

#include <iostream>
#include <algorithm>
#define ll long long
using namespace std;


int main(void)
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    ll P, T, i, j, arr[13] = { 0 }, cnt;
    cin >> P;
    while (P--)
    {
        cin >> T; cnt = 0;
        for (i = 1; i <= 12; i++) cin >> arr[i];

        for (i = 2; i <= 11; i++)
        {
            ll mn = 2e9;
            for (j = i; j <= 11; j++)
            {
                mn = min(mn, arr[j]);
                if (arr[i - 1] < mn && arr[j + 1] < mn) cnt++;
            }
        }
        cout << T << ' ' << cnt << "\n";
    }
}


감사합니다.

0개의 댓글