Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- int main() {
- int T, cs=1;
- scanf("%d", &T);
- for (cs=1; cs<=T;cs++) {
- int N, K, i;
- scanf("%d %d", &N, &K);
- int ara[N+1];
- for (i=0; i<=N; i++) scanf("%d", &ara[i]);
- int valid = 0;
- int mid, low = 1;
- int high = 10000;
- while (low <= high) {
- mid = low + (high-low)/2;
- int j=0, cnt =0, sum;
- while (j<=N) {
- if (cnt > K) break;
- sum = 0;
- while (sum+ara[j] <= mid) {
- sum += ara[j];
- j++;
- }
- cnt++;
- }
- if (cnt > K) low = mid + 1;
- else if (cnt < K) high = mid -1 ;
- if (cnt==K) high = mid - 1;
- }
- printf("Case %d: %d\n", cs, mid);
- int sum, j=0,cnt = 0;
- while (j<=N) {
- if (cnt>K) break;
- sum = 0;
- while (sum+ara[j] <= mid) {
- sum += ara[j];
- j++;
- }
- cnt++;
- printf("%d\n", sum);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment