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

Случайный массив

27.03.2023, 17:02. Показов 1031. Ответов 7

Студворк — интернет-сервис помощи студентам
Есть такая задача:
ограничение по времени на тест:0.5 секунд
ограничение по памяти на тест:256 мегабайт
Входные данные
Первая строка содержит целое число n
вторая — n
случайных целых чисел ai
(1≤ai≤n≤2^18).
Выходные данные
Выведите n строк: k-я строка должна содержать два целых числа i и j таких, что |ai−aj|=k.Если таких позиций не существует, оба числа должны быть равны нулю.
есть решение за O(n^2):
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
n=int(input())
a=list(map(int,input().split()))
for i in range(1,n+1):
    c=0
    for j in range(n):
        if a[j]+i in a:
            print(j+1,a.index(a[j]+i)+1)
            c=1
            break
        elif a[j]-i in a:
            print(a.index(a[j]-i)+1,j+1)
            c=1
            break
    if c==0:
        print(0,0)
Но для n≤2^18 надо выполнять вероятно за O(n).поможете с этой задачей, пожалуйста.

Добавлено через 34 минуты
вот один из примеров:
входные данные
10
2 10 4 1 5 9 3 2 4 2
выходные данные
9 7
9 10
8 5
5 4
5 2
6 7
6 10
2 10
4 2
0 0
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.03.2023, 17:02
Ответы с готовыми решениями:

Работа с файлами (Случайный порядок)
Необходимо сделать варианты ответов с вопросами из txt-файла в def load_questions, используя random.shuffle() и создав пустой список lst = ...

Случайный выбор из списка в файле
Здравствуйте, уважаемые форумчане! Пишем программу для тестирования. Вопросы берутся из txt файла. В списке например 6 вопросов....

Добавить случайный выбор 3 описаний и животных без повторений
Что нужно сделать: Напишите программу, которая принимает сначала 3 названия животных, а потом 3 описания для животных. После чего...

7
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
27.03.2023, 17:06
Цитата Сообщение от WAW123 Посмотреть сообщение
n≤2^18
да же для c++ за 0,5 сек это не решаемо за O(n)

Добавлено через 1 минуту
сорри, думал 10^18. тогда все решаемо.
0
0 / 0 / 0
Регистрация: 04.01.2023
Сообщений: 31
27.03.2023, 17:08  [ТС]
тогда выходит за O(logn) надо решить?

Добавлено через 2 минуты
но как?Можете просто подсказать.Я сам сегодня весь день мучался и ток за O(n^2).Просто я стараюсь сам решать задачи.И если я прошу помощи,то самое лучшее это подсказка.А то если мне сразу скажут решение,то у меня в голове ничего не останится
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
27.03.2023, 17:14
Лучший ответ Сообщение было отмечено WAW123 как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
n=int(input())
a=list(map(int,input().split()))
for i in range(1,n+1):
    c=0
    for j in range(n):
        if a[j]+i in a: # заменить на O(1) или O(log(n))
            print(j+1,a.index(a[j]+i)+1) # заменить на O(1) или O(log(n))
            c=1
            break
        elif a[j]-i in a: # заменить на O(1) или O(log(n))
            print(a.index(a[j]-i)+1,j+1) # заменить на O(1) или O(log(n))
            c=1
            break
    if c==0:
        print(0,0)
Добавлено через 3 минуты
тогда будет O(n^2). у тебя вообще O(n^3)
1
0 / 0 / 0
Регистрация: 04.01.2023
Сообщений: 31
28.03.2023, 08:59  [ТС]
eaa, вот:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
n=int(input())
a=list(map(int,input().split()))
m=dict.fromkeys(a,0)
for i in range(n):
    m[a[i]]=i+1
for i in range(1,n+1):
    c=0
    for j in range(n):
        if a[j]+i in m:
            print(j+1,m[a[j]+i])
            c=1
            break
        elif a[j]-i in m:
            print(m[a[j]-i],j+1)
            c=1
            break
    if c==0:
        print(0,0)
Добавлено через 29 секунд
но это решение не проходит последнюю группу тестов,где 2^17<=n<=2^18.

Добавлено через 1 минуту
вероятно надо за O(n).вы не подскажите как за O(n)?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
28.03.2023, 09:08
Цитата Сообщение от WAW123 Посмотреть сообщение
как за O(n)?
Да никак
0
0 / 0 / 0
Регистрация: 04.01.2023
Сообщений: 31
28.03.2023, 10:05  [ТС]
iSmokeJC, а может тогда это решение усовершенствовать как-нибудь?

Добавлено через 48 минут
или перевести это решение с питон на c++.Как раз на c++ есть такой же быстрый словарь как dict в питон-unordered_map.
0
0 / 0 / 0
Регистрация: 04.01.2023
Сообщений: 31
28.03.2023, 20:15  [ТС]
ребят,поможете с переводом с питон на c++ вот этого кода:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
n=int(input())
a=list(map(int,input().split()))
m=dict.fromkeys(a,0)
for i in range(n):
    m[a[i]]=i+1
for i in range(1,n+1):
    c=0
    for j in range(n):
        if a[j]+i in m:
            print(j+1,m[a[j]+i])
            c=1
            break
        elif a[j]-i in m:
            print(m[a[j]-i],j+1)
            c=1
            break
    if c==0:
        print(0,0)
У меня с c++ всё плохо

Добавлено через 50 минут
ладно ща тогда заведу отдельную тему
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.03.2023, 20:15
Помогаю со студенческими работами здесь

Случайный лес
Всем доброго времени суток! подскажите пожалуйста! есть такой код %%time # Set target variables, all other variables will be...

Случайный выбор функции
Доброго времени суток, нужна помощь. Не могу понять в чем проблема и как ее решить. Есть четыре функции, которые я решил поместить в...

Заменить случайный список указанным
Тут есть программа, и этот программа работает с рандомом. И тут нужно изменить рандом на массивы, чтобы программа взял значение из массива....

Выбрать случайный элемент из части списка
Недавно изучаю питон, есть вопрос, допустим у меня есть список: foo = как мне сделать, чтобы я мог выбрать случайный элемент не среди...

Случайный вариант ответа из списка без повторений
Доброго времени суток. Возникла проблема. Как сделать варианты ответов без повторений? from turtle import color import openpyxl ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru