В плацкартном вагоне 54 места, пронумерованных числами от 1 до 54. Вагон разбит ** 9...

0 голосов
372 просмотров

В плацкартном вагоне 54 места, пронумерованных числами от 1 до 54. Вагон разбит
на 9 купе. Первые 36 мест расположены по левую сторону от прохода, места 1–4 находятся
в первом купе, места 5–8 – во втором и т. д. В девятом купе находятся места с номерами 33–
36. По правую сторону от прохода находятся боковые места, их номера от 37 до 54, причём
они нумеруются в противоположном направлении: места 37 и 38 находятся напротив
девятого купе, а места 53 и 54 – напротив первого. Ниже приведена схема всех мест в вагоне.
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36
53 54 51 52 49 50 47 48 45 46 43 44 41 42 39 40 37 38
Группа школьников едет на олимпиаду и будет всю дорогу крутить спиннеры.
Поэтому им нужно купить места в нескольких подряд идущих купе вместе с прилегающими
боковыми местами. Даны номера свободных мест в поезде. Определите, какое наибольшее
число подряд идущих купе полностью свободны.
Программа получает на вход число N – количество свободных мест в вагоне
(0 ≤ N ≤ 54). Следующие N строк содержат номера свободных мест – различные числа от 1
до 54 в произвольном порядке, по одному числу в строке.
Программа должна вывести одно целое число – максимальное число подряд идущих
свободных купе (купе – 4 места слева от прохода и 2 боковых места) в этом вагоне.


Информатика (16 баллов) | 372 просмотров
Дано ответов: 2
0 голосов

Во вложеном файле приведено решение на языке С++.

(3.6k баллов)
0

если можно конечно эту же задачу на языке паскаль

0

Ваше решение неверно. При входных данных 1 1 , ваша программа выведет 1. Правильный ответ 0

0 голосов

Задача решалась в лоб, да и может иметь проблемы при запуске, но они должны быстро исправляться. Решено в паскале.

var b,i:integer;a:array[1..54] of integer;c:array[1..9] of integer;beginfor i:=1 to 9 doc[i]:=0;readln (b);for i:=1 to b do begin readln (a[i]); end;for i:=1 to b do begin if(a[i]=54 and a[i]=53 and a[i]>=1 and a[i]<=4) then) c[1]:=c[1]+1;  if(a[i]=51 and a[i]=52 and a[i]>=5 and a[i]<=8) then) c[2]:=c[2]+1;  if(a[i]=50 and a[i]=49 and a[i]>=9 and a[i]<=12) then) c[3]:=c[3]+1;  if(a[i]=48 and a[i]=47 and a[i]>=13 and a[i]<=16) then) c[4]:=c[4]+1;  if(a[i]=46 and a[i]=45 and a[i]>=17 and a[i]<=20) then) c[5]:=c[5]+1;  if(a[i]=44 and a[i]=43 and a[i]>=21 and a[i]<=24) then) c[6]:=c[6]+1;  if(a[i]=42 and a[i]=41 and a[i]>=25 and a[i]<=28) then) c[7]:=c[7]+1;  if(a[i]=40 and a[i]=39 and a[i]>=29 and a[i]<=32) then) c[8]:=c[8]+1;  if(a[i]=38 and a[i]=37 and a[i]>=33 and a[i]<=36) then) c[9]:=c[9]+1; end;for i:=1 to 9 do begin if (c[i]=6) then c[i]:=1 else c[i]:=0; end;if c[1]=1 then b:=1else b:=0;for i:=1 to 8 do begin if (c[i]+c[i+1]=2) then b:=b+1; end;writeln(b);end.<br>

(14 баллов)
0

Можно в файле?

0

есть паскаль на 65

0

не могу разобраться где ошибка

0

Алгоритм решения задачи от Gavgavgavgav достаточно оптимален. Правда по условию задачи есть несколько вопросов. Почему-то составители задачи решили, что если в вагоне есть только 1 свободное купе, то программа должна вывести количество рядом имеющихся свободных купе равное 1, а не 0. Есть решение этой задачи на Python на базе алгоритма от Gavgavgavgav с учетом непоняток от создателей задачи:)

0

kupe = [0]*9
kol=[0]*9
max = 0
maxx = 0
n = int(input())
for i in range(n):
x = int(input())
if x < 37:
x = x-1
kupe[x//4]+=1
elif x>36:
x = 54 - x
kupe[x//2]+=1
if kupe[x//4]==6 or kupe[x//2] == 6:
max = 1
for i in range(1,8):
if kupe[i]==6 and kupe[i-1]==6:
kol[i]=kol[i-1]+1
if kol[i]>max:
maxx=max+kol[i]
print(maxx)

0

Придется только разобраться с отступами :(