const readline = require('readline');
let rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input = [];
let N, K;
rl.on('line', (line) => {
input.push(line.trim());
[N, K] = input[0].split(' ').map(Number);
if (input.length === N + 1) {
rl.close();
}
});
rl.on('close', () => {
let fruits = [];
for (let i = 1; i <= N; ++i) {
fruits.push(input[i].split(' ').map(Number));
}
fruits = fruits.map(([p, c]) => [p, c / p]);
fruits.sort((a, b) => b[1] - a[1]);
let result = 0;
for (const [p, c] of fruits) {
const tmp = Math.min(K, p);
K -= tmp;
result += tmp * c;
if (K === 0) break;
}
console.log(result);
process.exit();
});
쉬어가는 문제 좋아요
과일은 조각으로 자를 수 있고, 조각의 가격이 1이기 때문에 돈을 남김없이 쓰면 된다.
포만감이 큰 게 우선이니까 포만감이 큰 순서대로 채워나가면 된다.