Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 27.02.2024
Сообщений: 1

задача по спортпрогу

27.02.2024, 20:52. Показов 589. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В далёкой-далёкой галактике, на планете сладостей, жил-был маленький, но очень умный амням по имени Глюк. Глюк был не простым амнямом – у него была необычная миссия. В его мире над землёй в определённые времена года появлялся удивительный конфетный потолок. Этот потолок был всего лишь на высоте в два амнямовых роста и представлял собой два слоя вкуснейших конфет. Только вот достать их было не так-то просто.

Конфетный потолок был создан древними волшебниками исключительно для испытания ловкости и меткости маленьких амнямов. Глюк узнал, что если справится с этим испытанием, он не только сможет наслаждаться конфетами, но и получит ключ к следующему уровню своего обучения – изучению тайной магии амнямов, которая позволяет мгновенно телепортироваться к любой сладости во Вселенной.

Но испытание было непростым. Двухслойный потолок состоял из ширины в N конфет, и у Глюка было всего X пуль. Одним выстрелом он мог сбить только одну конфету. Глюк должен был быть не только метким стрелком, но и умелым стратегом, чтобы выбрать наиболее подходящие конфеты для выстрела и максимально эффективно использовать свои ограниченные ресурсы. Достать конфету со второго слоя можно только, если уже сбита конфета на первом.

Формат ввода
В первой строке содержатся два числа:

NN (1≤N≤105 1≤N≤105)

− ширина потолка и XX (1≤X≤103 1≤X≤103)

− количество пуль. Во второй и третьей строках содержатся

N чисел a i a i (1≤ai≤1000 1≤ai ≤1000), разделенных пробелом,

− показатели вкуса конфет на втором и первом слое соответственно.

Формат вывода
В единственной строке выведите число

− наибольшую суммарную величину вкуса полученных конфет.

Пример 1
Ввод Вывод
4 4
96 69 320 816
997 706 400 60
2579
Пример 2
Ввод Вывод
5 3
671 334 37 646 599
77 630 134 88 781
2010

У меня получился следующий код, но там неправильный ответ на тесте 3. Скажите пожалуйста, где хотя бы может быть ошибка

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
n, x = map(int, input().split())
a = list(map(int, input().split()))
b = list(map(int, input().split()))
 
cnt = 0
m = 0
s = [0]*n
ans = []
k = 0
c = 0
 
 
if x == 1:
    print(max(b))
else:
    for i in range(n):
        if x < 3:
            for y in range(n):
                if s[y] == 1:
                    ans.append(a[y])
                else:
                    ans.append(b[y])
            ans = (sorted(ans)[::-1])
            k = sum(ans[0:2])
            if max(map(sum, zip(a, b))) > int(k):
                print(cnt+max(map(sum, zip(a, b))))
            else:
                print(cnt+int(k))
            break
        else:
            for j in range(n):
                    if s[j] == 1:
                        if a[j] > m:
                            m = a[j]
 
                    else:
                        if b[j] > m:
                            m = b[j]
                            c = j
            cnt += m
            s[b.index(b[c])] = 1
            b[c] = 0
            m = 0
            x -= 1
Добавлено через 46 минут
Вот более обновленная версия кода. Кстати нашел контрпример.

4 6
134 124 456 13
123 1000 123 1234

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
n, x = map(int, input().split())
a = list(map(int, input().split()))
b = list(map(int, input().split()))
 
cnt = 0
m = 0
s = [0]*n
ans = []
k = 0
c = 0
d = 1
 
 
if x == 1:
    print(max(b))
else:
    for i in range(n*2):
        if x < 3:
            for y in range(n):
                if s[y] == 1:
                    ans.append(a[y])
                else:
                    ans.append(b[y])
            ans = (sorted(ans)[::-1])
            k = sum(ans[0:2])
            if max(map(sum, zip(a, b))) > int(k):
                print(cnt+max(map(sum, zip(a, b))))
            else:
                print(cnt+int(k))
            break
        else:
            for j in range(n):
                    if s[j] == 1:
                        if a[j] > m:
                            m = a[j]
                            c = j
                            d = 0
                    else:
                        if b[j] > m:
                            m = b[j]
                            c = j
                            d = 1
            cnt += m
            s[b.index(b[c])] = 1
            if d == 1:
                b[c] = 0
            else:
                a[c] = 0
            m = 0
            x -= 1
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.02.2024, 20:52
Ответы с готовыми решениями:

Олимпиадная задача по программированию. PascalABC.NET. Задача L. Переключение между окнами
Когда пользователь работает в операционной системе Winux, у него часто запущено несколько приложений. Каждое из приложений работает в...

Задача со строками. Задача находится на фотке, которая прикреплена к сообщению
Фотку прикрепил к сообщению. П.5.4. Правил Запрещено создавать темы с бессмысленными названиями вроде &quot;Помогите!&quot;,...

Васильев C# Глава 8 задача 2 (Просьба объяснить формулировку(задача внутри)
Текст задачи Написать программу , в которой есть класс с полем, являющимся ссылкой на одномерный целочисленный массив. У класса есть...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.02.2024, 20:52
Помогаю со студенческими работами здесь

Васильев C# Глава 7 задача 8 (Просьба объяснить формулировку(задача внутри)
Текст задачи Напишите программу с классом, у которого есть текстовое поле. Значение текстовому полю присваивается при создании объекта...

Задача при создание нового лида выводится задача от несущ.пользователя Б24
При создание нового Лида Выходит уведомление от пользователя которого нету в компаний. Как поменять пользователя???

Задача целочисленного программирования. Задача на оптимизацию. Матричный метод
Здравствуйте. Преподаватель дал задачи (скриншоты прикреп.) и эти две задачи были решены компонентным методом (файлы прикреплены). Но...

Задача о шахматном коне (задача Эйлера). Поиск в глубину
Требуется обойти все клетки шахматной доски ходом коня. Метод поиска решений – поиск в глубину. Буду признателен за любую помощь! Заранее...

Задача на перебор вариантов. Задача Л.Эйлера. Про чиновника
Задача Л.Эйлера. Некий чиновник купил лошадей и быков на сумму 1770 талеров. За каждую лошадь он уплатил по 31 талеру, а за каждого быка по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru