задача по информатике на любом языке Небольшая, но очень дружная компания из N студентов решила «шикануть» и проехать на поезде из одного города в другой в купейном вагоне. При покупке билетов они хотели разместиться как можно более компактно (чтобы поездка была веселее) и при этом еще и по возможности сэкономить на суммарной стоимости всех билетов.
Требование максимальной компактности размещения предполагает, что все места должны иметь последовательную нумерацию, без пропусков (находиться в соседних купе). Незанятые компанией места (свободные или занятые другими пассажирами) могут оставаться не более, чем в одном купе.
Требование минимальной стоимости означает, что в случае возможности выбора билеты приобретаются на места более дешевой категории (если это не приводит к нарушению требования максимальной компактности размещения).
Стандартная схема нумерации мест в 36-местном купейном вагоне предполагает наличие мест двух категорий: «нижние» (1, 3, 5, ..., 35) и «верхние» (2, 4, 6, ..., 36). Стоимость «нижнего» места всегда больше либо равна стоимости «верхнего» места. В вагоне всего девять купе, в каждом по четыре места (1..4, 5..8, и т.д.).
Как это часто бывает, решение о путешествии было принято в последний момент, когда часть мест в единственном купейном вагоне подходящего поезда уже была занята студентам определить, возможно ли размещение в вагоне, соответствующее их требованиям, и, при наличии нескольких вариантов, выбрать такой, который имеет минимальную суммарную стоимость всех билетов.
Входные данные
В первой строке через пробел записаны два неотрицательных целых числа, не превышающих 10000 – сначала стоимость «нижнего» места, затем стоимость «верхнего» места.
Во второй строке записаны два неотрицательных целых числа – численность компании N (1≤N≤36) и количество свободных мест в купейном вагоне S (0≤S≤36).
Если S>0, то в третьей строке через пробел записаны S чисел – номера всех свободных мест в вагоне в порядке возрастания.
Выходные данные
Вывести минимально возможную суммарную стоимость всех билетов для размещения всех студентов, отвечающего их требованиям.
В случае отсутствия возможности необходимого размещения, вывести «-1».
type omas=array[1..n] of integer;
Procedure Del (var z:omas; k:byte);
var i:byte;
begin
for i:=k to n-1 do z[i]:=z[i+1];
z[n]:=0;
end;
var a:omas; i,b:integer;
begin
Randomize;
for i:=1 to n do
begin
a[i]:=random(20);
write(a[i]:4);
end;
writeln;
b:=6;
i:=1;
while (i<=n)and(a[i]<>b) do i:=i+1;
if i<=n then
begin
Del(a,i);
writeln('Размерность массива = ',n-1);
for i:=1 to n-1 do write(a[i]:4);
writeln;
end else writeln('Массив не изменился');
end.
Пример:
12 13 6 7 17 1 18 17 3 2 12 3 16 6 7 13 0 2 5 18
Размерность массива = 19
12 13 7 17 1 18 17 3 2 12 3 16 6 7 13 0 2 5 18
#include <iostream>
int gg(int k, int p, double m)
{
p = (k >= p) ? p : p / k;
return (m * 2 * p);
}
int main()
{
int k, p;
double m;
std::cout << "Сколько котлет можно одновременно положить на сковороду ? ";
std::cin >> k;
std::cout << "Сколько минут жарится одна сторона котлеты ? ";
std::cin >> m;
std::cout << "Сколько котлет вы будете жарить ? ";
std::cin >> p;
std::cout << p << " котлет пожарятся с двух сторон минимум за " << gg(k, p, m) << " минут";
}