# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
733062 | 2023-04-30T04:04:54 Z | rahulverma | Exhibition (JOI19_ho_t2) | Java 11 | 0 ms | 0 KB |
import java.io.*; import java.util.*; public class exhibition { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int n = Integer.parseInt(st.nextToken()); int m = Integer.parseInt(st.nextToken()); int[][] arr = new int[n][2]; Integer[] frames = new Integer[m]; for(int i = 0; i < n; i++) { st = new StringTokenizer(br.readLine()); arr[i][0] = Integer.parseInt(st.nextToken()); arr[i][1] = Integer.parseInt(st.nextToken()); } for(int i = 0; i < m; i++) frames[i] = Integer.parseInt(br.readLine()); Arrays.sort(frames, Collections.reverseOrder()); Arrays.sort(arr, (a, b) -> a[1] - b[1]); int left = 0; int right = m; while(left <= right) { int mid = (left + right)/2; boolean works = false; int[] vals = new int[mid]; for(int i = mid - 1; i >= 0; i--) { vals[mid - i - 1] = frames[i]; } int p = 0; for(int i = 0; i < n; i++) { if(arr[i][0] <= vals[p]) { p++; } if(p >= mid) { works = true; break; } } if(works) { left = mid + 1; } else { right = mid - 1; } } PrintWriter pw = new PrintWriter(System.out); pw.println(left); pw.close(); } }