[softeer/C++] 금고털이

mani·2023년 1월 7일
0

softeer

목록 보기
2/11

금고털이

각 금속의 무게, 무게당 가격 -> 배낭에 채울 수 있는 가장 값비싼 가격은?
첫 줄에 배낭의 무게 W, 금속의 무게 N
둘째 줄부터 무게 M, 무게 당 가격 P

#include<iostream>
#include<unordered_map>

using namespace std;

int main(int argc, char** argv)
{
	int answer = 0;
	int w, n;
	cin >> w >> n;

	unordered_map<int,int> umap;
	int max = 0;
	int m,p;
	
	for(int i=0;i<n;i++){
		cin >> m >> p;
		umap[p] += m;
		if(max < p) max=p;
	}

	while(w!=0){
		if(w >= umap[max]){
			answer += umap[max] * max;
			w -= umap[max];
			umap.erase(max);
			max=0;
			for(auto findmax : umap){
				if(findmax.first>max) max = findmax.first;
			}
		}
		else{
			answer += w * max; 
			break;
		}
	}
	cout <<answer;
	return 0;
}
profile
log

0개의 댓글