Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
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
Tags
more
Archives
Today
Total
관리 메뉴

코드와이

[BAEKJOON] 1202. 보석 도둑 본문

acmicpc

[BAEKJOON] 1202. 보석 도둑

코드와이 2021. 5. 13. 00:14

 

문제링크

www.acmicpc.net/problem/1202

 

1202번: 보석 도둑

첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci

www.acmicpc.net

 

package acmicpc.Gold2;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.PriorityQueue;
import java.util.StringTokenizer;

public class 보석_도둑 {

	static int n, k;
	static class jewelry implements Comparable<jewelry>{
		int m, v;

		public jewelry(int m, int v) {
			super();
			this.m = m;
			this.v = v;
		}

		@Override
		public int compareTo(jewelry o) {
			if(m == o.m) return o.v - v;
			return m - o.m;
		}
	}
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		n = Integer.parseInt(st.nextToken());
		k = Integer.parseInt(st.nextToken());
		
		jewelry[] list = new jewelry[n];
		for(int i = 0 ; i < n ; i++) {
			st = new StringTokenizer(br.readLine());
			int m = Integer.parseInt(st.nextToken());
			int v = Integer.parseInt(st.nextToken());
			list[i] = new jewelry(m,v);
		}
		
		List<Integer> bags = new ArrayList<>();
		for(int i = 0 ; i < k ; i++) {
			bags.add(Integer.parseInt(br.readLine()));
		}
		Arrays.sort(list);
		Collections.sort(bags);
		long ans = 0;
		PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder()); 
		for(int i = 0, j = 0 ; i < k ; i++) {
			while(j < n && list[j].m <= bags.get(i)) {
				pq.add(list[j++].v);
			}
			
			if(!pq.isEmpty()) {
				ans += pq.poll();
			}
		}
		
		System.out.println(ans);
	}
}

'acmicpc' 카테고리의 다른 글

[BAEKJOON] 7453. 합이 0인 네 정수  (0) 2021.05.16
[BAEKJOON] 1525. 퍼즐  (0) 2021.05.13
[BAEKJOON] 17143. 낚시왕  (0) 2021.05.12
[BAEKJOON] 15686. 치킨 배달  (0) 2021.05.10
[BAEKJOON] 10026. 적록색약  (0) 2021.05.10