본문 바로가기

codeforce/#618 (Div.2)

Codeforces #618 (Div. 2) B. Assigning to Classes

학생들을 두개의 class로 나누고, 두 class의 median 값의 차를 최대한 줄여야 한다. 배열 a가 정렬이 되어있다고 하면, 두 class의 중앙값은 a[n-1]과 a[n]이 되어야 그 차이가 최소가 된다. 

만약 한 class의 중앙값이 a[n-2]으로 설정이 되었다면, 다른 클래스의 중앙 값은 아무리 작아도 a[n] 이 된다.

#include <iostream>
#include <algorithm>

using namespace std;

int main(){
    int t, n;
    cin >> t ;

    while (t-- ){
        cin >> n;
        
        int a[200010];
        
        for (int i = 0; i < 2 * n; i ++){
            cin >> a[i];
        }
        sort(a, a+ 2*n);
        cout << abs (a[n-1] - a[n]) << endl;
    }
    return 0;
}
반응형

'codeforce > #618 (Div.2)' 카테고리의 다른 글

Codeforces #618 (Div. 2) A. Non-zero  (0) 2020.02.16