-
[Algorithm] C++ 뮤직비디오(이분검색)Programming/Algorithm 2019. 12. 23. 14:52
입력설명
첫 줄에 한 줄에 자연수 N(3<=N<=1,000,000)과 M이 주어집니다. 두 번째 줄에 N개의 수가 공백을 사이에 두고 주어집니다.
첫째 줄에 자연수 N(1≤N≤1,000), M(1≤M≤N)이 주어진다. 다음 줄에는 라이브에서 부른 순서대로 부른 곡의 길이가 분 단위로(자연수) 주어진다. 부른 곡의 길이는 10,000분을 넘지 않는다고 가정하자.
출력설명첫 줄에 정렬 후 M의 값의 위치 번호를 출력한다
첫 번째 줄부터 DVD의 최소 용량 크기를 출력하세요
입력예제
9 3
1 2 3 4 5 6 7 8 9
출력예제
17
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<algorithm> using namespace std; int a[1001], n; int Count(int s) { int i, cnt = 1, sum = 0; for (i = 1; i <= n; i++) { if (sum + a[i] > s) { cnt++; sum = a[i]; } else { sum = sum + a[i]; } } return cnt; } int main() { int m, i, lt = 1, rt = 0, mid, res; scanf("%d %d", &n, &m); for (i = 1; i <= n; i++) { scanf("%d", &a[i]); rt = rt + a[i]; } while (lt <= rt) { mid = (lt + rt) / 2; if (Count(mid) <= m) { res = mid; rt = mid - 1; } else { lt = mid + 1; } } printf("%d\n", res); return 0; }
'Programming > Algorithm' 카테고리의 다른 글
[Algorithm] C++ 봉우리(2차원 배열) (0) 2019.12.26 [Algorithm] C++ 멀티태스킹(카카오 먹방 문제 변형, 시뮬레이션) (0) 2019.12.25 [Algorithm] C++ 공주 구하기(조세퍼스) (0) 2019.12.23 [Algorithm] C++ 마구간 정하기(이분검색) (0) 2019.12.23 [Algorithm] C++ 이분검색 (0) 2019.12.23