Notice
Recent Posts
Recent Comments
05-21 07:17
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Byeol Lo

N2512 - 예산 본문

Algorithm/Binary Search

N2512 - 예산

알 수 없는 사용자 2023. 11. 14. 01:20
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
import java.util.Collections;


public class Main {
    final static BufferedReader BR = new BufferedReader(new InputStreamReader(System.in));
    static StringTokenizer st;

    public static void main(String[] args) throws IOException {
        BR.readLine();
        ArrayList<Integer> arr = inputing();
        int m = Integer.parseInt(BR.readLine());
        Collections.sort(arr);
        System.out.println(binarySearch(arr, m));
    }

    private static ArrayList<Integer> inputing() throws IOException {
        ArrayList<Integer> arr = new ArrayList<>();
        st = new StringTokenizer(BR.readLine());
        while(st.hasMoreTokens())
            arr.add(Integer.parseInt(st.nextToken()));
        return arr;
    }

    private static int binarySearch(ArrayList<Integer> arr, int m) {
        long budget;
        int min = 0;
        int max = arr.get(arr.size()-1);
        int mid;

        while(min <= max) {
            mid = (min + max)/2;
            budget = 0;
            for (int i : arr) budget += Math.min(i, mid);
            if(budget <= m) min = mid+1;
            else max = mid-1;
        }
        return max;
    }
}

 

'Algorithm > Binary Search' 카테고리의 다른 글

Binary Search - 간단 정리  (1) 2023.11.14
N14003 - 가장 긴 증가하는 부분 수열 5  (0) 2023.11.08
N12738 - 가장 긴 증가하는 부분 수열 3  (0) 2023.11.08
N2776 - 암기왕  (0) 2023.11.06
Comments