Лео Коссовский
Мыслитель
(5434)
5 месяцев назад
function calculateHighestEarningDriver(input) {
const lines = input.trim().split('\n');
const n = parseInt(lines[0]); // количество поездок
const trips = lines.slice(1);
// Объект для хранения заработков водителей
const earnings = {};
// Проход по каждой поездке
for (let i = 0; i < n; i++) {
const tripDetails = trips[i].split(' ');
const time = parseInt(tripDetails[0]);
const classType = tripDetails[1];
const driver = tripDetails.slice(2).join(' ');
let rate;
switch (classType) {
case 'E':
rate = 10;
break;
case 'K':
rate = 15;
break;
case 'B':
rate = 30;
break;
default:
rate = 0;
break;
}
const earningsForTrip = time * rate;
if (earnings[driver] === undefined) {
earnings[driver] = earningsForTrip;
} else {
earnings[driver] += earningsForTrip;
}
}
// Находим водителя с наибольшим заработком
let maxEarning = -1;
let bestDriver = '';
for (const driver in earnings) {
if (earnings[driver] > maxEarning) {
maxEarning = earnings[driver];
bestDriver = driver;
}
}
return bestDriver;
}
// Пример использования функции с заданными данными
const input = `
7
30 K Igor
20 E Kirill
30 B Anna
40 E Igor
10 E Anna
10 E Kirill
10 E Anna
`;
console.log(calculateHighestEarningDriver(input)); // Вывод: Anna
Входные данные:
Вводится натуральное число n – количество совершенных поездок. Далее вводятся n строк со временем поездки, классом поездки и именем таксиста. В каждой из таких строк идет сначала время (натуральное число), потом пробел, потом класс поездки («E» - эконом, «K» - комфорт, «B» - бизнес), затем пробел и имя таксиста (строка из латинских букв).
Выходные данные:
Вывести строку – имя водителя такси, заработавшего наибольшее количество денег. Гарантируется, что такой таксист один.
Так, например, если программе на вход будут поданы следующие данные:
7
30 K Igor
20 E Kirill
30 B Anna
40 E Igor
10 E Anna
10 E Kirill
10 E Anna,
то она должна вывести «Anna».