vanab322
15.01.2021 00:47

задача по информатике на любом языке Небольшая, но очень дружная компания из 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».

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
Ghanali
16.03.2022 09:53
1. Современный вариант (так можно писать):

// PascalABC.NET 3.1, сборка 1184 от 02.03.2016
begin
  var n:=10;
  var a:=ArrRandom(n,1,99); Print('A:'); a.Println;
  var b:=ArrRandom(n,1,99); Print('B:'); b.Println;
  var x:=a.Zip(b,(p,q)->p*q); Print('X:'); x.Println;
  Writeln('min(X)=',x.Min)
end.

Тестовое решение:
A: 34 37 41 26 78 10 13 15 59 71
B: 70 49 56 94 79 25 72 54 39 34
X: 2380 1813 2296 2444 6162 250 936 810 2301 2414
min(X)=250

2. "Школьный вариант" (так учат в школе, чтобы жизнь медом не казалась, но может быть, что учителя сами не понимают современные технологии программирования):

// PascalABC.NET 3.1, сборка 1184 от 02.03.2016
const
  n=10;
var
  a,b,x:array[1..n] of integer;
  i,min:integer;
begin
  Randomize;
  Write('A: ');
  for i:=1 to n do begin
    a[i]:=Random(99)+1; Write(a[i],' ')
    end;
  Writeln;
  Write('B: ');
  for i:=1 to n do begin
    b[i]:=Random(99)+1; Write(b[i],' ')
    end;
  Writeln;
  Write('X: ');
  min:=100*100; // больше максимального
  for i:=1 to n do begin
    x[i]:=a[i]*b[i]; Write(x[i],' ');
    if min>x[i] then min:=x[i]
    end;
  Writeln;
  Writeln('min(X)=',min)
end.

Тестовое решение:
A: 43 52 75 74 18 57 39 67 44 20
B: 33 16 36 34 65 9 42 51 79 36
X: 1419 832 2700 2516 1170 513 1638 3417 3476 720
min(X)=513
0,0(0 оценок)
Ответ:
moldirkurmanbek
09.08.2022 12:21
Задача №1

//Pascal
var x,y:real;
begin
  readln(x,y);
  if (x>0) and (y>0) then writeln('I четверть');
  if (x<0) and (y>0) then writeln('II четверть');
  if (x<0) and (y<0) then writeln('III четверть');
  if (x>0) and (y<0) then writeln('VI четверть');
end;
 
Задача №2

//Pascal
var a:integer;
begin
  readln(a);
  if a mod 2 =0 then writeln(' Четное')
  else writeln(' Нечетное');
  if a mod 10 =7 then writeln(' оканчивается на 7')
  else writeln(' не оканчивается на 7 ');
  if a mod 5 =0 then writeln(' делится на 5 ')
  else writeln(' не делится на 5');
 
end.
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота