codeforce/#618 (Div.2) (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 #include using namespace std; int main(){ int t, n; cin >> t ; while (t-- ){ cin >> n; int a[200010]; for (int i = 0; i > a[i]; } sort(a, a+ 2*n); cout Codeforces #618 (Div. 2) A. Non-zero a[1]부터 a[n]까지 n개의 수를 입력받는다. ai = ai + 1 을 수행할 수 있고, a[1] + a[2]+ ... + a[n] 이 0 이 아니고 a[1]*a[2]*...a[n] 이 0이 아니게 되도록하는 최소 +1의 회수를 출력하는 문제이다. a[i]가 0이 되면 안되므로, a[i]가 0이면 +1을 해준다. 그리고 총합이 0이된다면, 양수인 a[i]에 +1을 해주면 문제의 조건에 만족하는 수열을 만들 수 있다. #include using namespace std; int main(){ int t, n; cin >> t ; while (t-- ){ cin >> n; int a[110]; int addCnt = 0; int sum = 0; for (int i = 0; i < n; i ++){ cin.. 이전 1 다음