Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Программирование. JavaScript. Задание 28

Артём Свешников Знаток (268), на голосовании 4 месяца назад
Компания, предоставляющая услуги такси, хочет премировать самого лучшего (заработавшего больше всех денег) таксиста за месяц. У нее есть данные о всех поездках: время поездки, класс поездки (эконом, комфорт, бизнес) и имя водителя такси. Напишите программу, которая по этим данным вычислит таксиста, который заработал больше всех денег за месяц. Известно, что 1 минута эконом-класса стоит 10 рублей, 1 минута комфорт-класса стоит 15 рублей, а 1 минута бизнес-класса стоит 30 рублей.

Входные данные:

Вводится натуральное число 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».
Голосование за лучший ответ
Лео Коссовский Мыслитель (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
Похожие вопросы