Задать вопрос
Alexander_tt0
@Alexander_tt0
Интеграл в уме

Что не так с этим кодом?

Решаю задачу из подготовки к олимпиаде "Технокубок 23-24", мой код получает результат 22 из 25 с ошибкой WA (Код ошибки: WA «Wrong Answer» — неверный ответ), что я сделал не так?

Трасса E2-E4 состоит из N участков. Автомобиль проехал i-й участок со скоростью vi километров в час, затратив на прохождение участка ti часов времени.
Контроль скорости на трассе осуществляется следующим образом: камера на въезде фиксирует время, когда автомобиль начал движение по первому участку, камера
на выезде фиксирует время, когда автомобиль завершил движение по последнему участку, после чего вычисляется средняя скорость на всей трассе. Если она
превосходит v{max}, водитель получает штраф за превышение скорости.
Вам даны значение всех vi и ti, а также v{max}. Определите, получит ли водитель штраф.


Первая строка входных данных содержит два целых числа N и v{max} — количество участков и максимально допустимую среднюю скорость соответственно (2 ≤ N ≤ 64, 100 ≤ v{max} ≤ 200).
Каждая из последующих N строк содержит по два целых числа vi и ti (100 ≤ vi ≤ 200, 1 ≤ ti ≤ 10) — скорость, с которой водитель проехал i-й участок, и время прохождения i-го участка, соответственно.
Выведите 1, если водитель получит штраф за превышение скорости, и 0 в противном случае.

Код на Python:
entered_list = input().split()
nextlist = list(map(int, entered_list))
N = nextlist[0]
Vmax = nextlist[1]

to = []
So = []
def inp():
    for i in range(N):
        enter_list = input().split()
        enter_list = list(map(int, enter_list))
        S = enter_list[0] * enter_list[1]
        t = enter_list[1]
        to.append(t)
        So.append(S)
        enter_list.clear()
inp()


if sum(So)//sum(to) > Vmax:
    print(1)
else: 
    print(0)
  • Вопрос задан
  • 341 просмотр
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
@mr_secret
Возможная причина №1: в коде не учитывается то, что с каждой скоростью он движется в течение разного времени.
Возможное решение №1:
from statistics import mean


N, Vmax = map(int, input().split())

to = []
Vo = []


def inp():
    for i in range(N):
        v, t = map(int, input().split())
        Vo.extend((v,)*t)


inp()

print(int(
    mean(Vo) < Vmax
))

Возможная причина №2: в коде не учитывается то, что с каждой скоростью он движется по участкам разной длины.
Возможное решение №2:
from statistics import mean


N, Vmax = map(int, input().split())

Vo = []
So = []


def inp():
    for i in range(N):
        v, t = map(int, input().split())
        S = v*t
        So.append(S)
        Vo.extend((v,) * S)


inp()

print(int(
    mean(Vo) < Vmax
))


P.S. Два представленных выше решения - разные, то есть дают разный ответ.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
31 янв. 2025, в 06:03
9999999 руб./за проект
31 янв. 2025, в 06:02
9999999 руб./за проект
31 янв. 2025, в 06:02
9999999 руб./за проект