본문 바로가기
PS 문제 풀이/SWEA

[SWEA] 8825 홀수 중간값 피라미드2

by 까망 하르방 2021. 2. 24.
반응형

출처: SWEA

 Input 

2

4

1 6 3 7 4 5 2

2

3 1 2

 

 Output 

#1 4

#2 2

 

 


#include<iostream>
#include<cstdio>
using namespace std;
int n, arr[200000];
 
bool cmp(int x, int mid) {
    return x >= mid;
}
 
bool judgeUpDown(int mid) {
    for (register int i = 1; i <= n - 1; ++i) {
        if (cmp(arr[n - i + 1], mid) == cmp(arr[n - i], mid)) return cmp(arr[n - i], mid);
        if (cmp(arr[n + i - 1], mid) == cmp(arr[n + i], mid)) return cmp(arr[n + i], mid);
    }
    return cmp(arr[1], mid);
}
 
int main(){
    ios_base::sync_with_stdio(false); 
    cin.tie(NULL); 
    cout.tie(NULL);
 
    int testCase; cin >> testCase;
    for (int tc = 1; tc <= testCase; ++tc) {
        cin >> n;
        for (int i = 1; i <= 2 * n - 1; ++i)
            cin >> arr[i];
 
        int left = 1, right = 2 * n - 1, answer = 1;
        while (left <= right){
            int mid = (left + right) >> 1;
            if (judgeUpDown(mid)) {
                answer = mid;
                left = mid + 1;
            }
            else right = mid - 1;
        }
 
        // 정답 출력
        printf("#%d %d\n", tc, answer);
    }
}

 

반응형

'PS 문제 풀이 > SWEA' 카테고리의 다른 글

[SWEA] 9092 마라톤  (0) 2021.02.24
[SWEA] 5684 운동  (0) 2021.02.24
[SWEA] 5642 합  (0) 2021.02.24
[SWEA] 8016 홀수 피라미드  (0) 2021.02.24
[SWEA] 8822 홀수 중간값 피라미드 1  (0) 2021.02.24

댓글