안녕하세요. 오늘은 견학을 갈 거예요.

문제

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

아이디어

전시를 관람할 때 처음과 끝만 보면 됩니다.
이 값들을 다 모으면 2N개가 됩니다.
이중에서 정답이 있습니다. 백준 중앙값 문제에 따라서 정렬한 뒤 중앙값 (근데 더 작은값)이 정답이 됩니다. 그래서 (2N-1)/2인 N-1이 정답이 됩니다.

소스코드

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

int main(void)
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    int N, M, i, j, x, k;
    vector <int> num;

    cin >> N >> M;
    for (i = 0; i < N; i++)
    {
        cin >> k;
        for (j = 1; j <= k; j++)
        {
            cin >> x;
            if (j == 1 || j == k) num.push_back(x);
        }
    }
    sort(num.begin(), num.end());
    cout << num[N - 1];
}


감사합니다.

0개의 댓글