Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- import java.lang.*;
- import java.io.*;
- public class Main {
- public static void main (String[] args) throws java.lang.Exception {
- Scanner sc = new Scanner(System.in);
- int n = sc.nextInt();
- int [] arr = new int[n];
- for (int i = 0; i < n; i++) {
- arr[i] = sc.nextInt();
- }
- int B = sc.nextInt();
- if(B>n){
- System.out.print(-1);
- return;
- }
- long sum = 0;
- for (int i = 0; i < n; i++) {
- sum = sum + arr[i];
- }
- long li = arr[0];
- long hi = sum+100;
- long res = -1;
- while (li <= hi) {
- long mid = (hi + li) / 2;
- if (isAllocationPossible(arr, n, B, mid)) {
- res = mid;
- hi = mid - 1;
- } else {
- li = mid + 1;
- }
- }
- System.out.println(res);
- }
- public static boolean isAllocationPossible(int [] arr, int n, int B, long barrier) {
- int student = 1;
- long currentpages = 0;
- for (int i = 0; i < n; i++) {
- if (arr[i] > barrier) {
- return false;
- }
- if (currentpages + arr[i] > barrier) {
- student++;
- if (student > B) {
- return false;
- }
- currentpages = arr[i];
- } else {
- currentpages = currentpages + arr[i];
- }
- }
- return true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement