Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 16.12.2023
Сообщений: 4

Как снизить время выполнения этой программы?

16.12.2023, 19:19. Показов 3445. Ответов 66
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дано N целых чисел. Требуется выбрать из них три таких числа, произведение которых максимально.
Входные данные
Во входном файле INPUT.TXT записано сначала число N — количество чисел в последовательности (3 ≤ N ≤ 1000000). Далее записана сама последовательность: N целых чисел, по модулю не превышающих 30000.

Выходные данные
В выходной файл OUTPUT.TXT выведите значение наибольшего произведения искомых трех чисел.

Помогите уменьшить время выполнения программы(Время: 1 сек. Память: 128 Мб - это ограничения)

Мое решение:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    long long n = 0, x = 0, i = 0, x1, x2;
    cin >> n;
    long long a[1000001]{ 0 };
    for (i = 0; i < n; i++)
        cin >> a[i];
    sort(a, a + n);
    x1 = a[0] * a[1] * a[n - 1];
    x2 = a[n - 3] * a[n - 1] * a[n - 2];
    if (x1 <= x2) x = x2;
    else if (x1 > x2) x = x1;   
    cout << x;
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.12.2023, 19:19
Ответы с готовыми решениями:

Определить время выполнения этой программы
#include &lt;iostream&gt; #include &lt;conio.h&gt; int main() { std::string str; std::cout &lt;&lt; &quot;Type some text: &quot;; ...

Как уменьшить время выполнения программы?
Помогите пожалуйста сократить время выполнения программы. Работает за 5.008 сек, а должна за 1 сек. Вот код: #include...

Как указать время выполнения программы?
Как можно в этой программе указать время выполнения программы в нужном месте,чтобы при вводе переменных не шло время? #include...

66
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6689 / 3076 / 1064
Регистрация: 01.06.2021
Сообщений: 11,856
17.12.2023, 23:14
Студворк — интернет-сервис помощи студентам
XLAT, ахаха, на питоне принял самый банальный код

Python
1
2
3
4
input()
a = list(map(int, input().split()))
a.sort()
print(max(a[0]*a[1]*a[-1],a[-1]*a[-2]*a[-3]))
Стал 18-м среди лучших на Python)))
Миниатюры
Как снизить время выполнения этой программы?  
0
Just Do It!
 Аватар для XLAT
4221 / 2686 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
17.12.2023, 23:25
Royal_X,
на питоне все решили, а вот на С++ нет ни одного чела, который бы решил.
хочешь быть первым?

в обсуждениях:


админ, походу, на всех языках подправил, а на С++ сломал ...
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6689 / 3076 / 1064
Регистрация: 01.06.2021
Сообщений: 11,856
17.12.2023, 23:35
XLAT, у меня на MV C++ то же самое, падает на 48
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6689 / 3076 / 1064
Регистрация: 01.06.2021
Сообщений: 11,856
17.12.2023, 23:37
Цитата Сообщение от XLAT Посмотреть сообщение
а вот на С++ нет ни одного чела, который бы решил.
да их много, кто решил. Даже топ 20 есть
Миниатюры
Как снизить время выполнения этой программы?  
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6689 / 3076 / 1064
Регистрация: 01.06.2021
Сообщений: 11,856
17.12.2023, 23:39
XLAT, но то, что валидатор глючит для С++, это правда. Не может быть, чтобы код на питон выполнялся быстрее кода на С++.
0
Just Do It!
 Аватар для XLAT
4221 / 2686 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
17.12.2023, 23:42
Цитата Сообщение от Royal_X Посмотреть сообщение
да их много, кто решил. Даже топ 20 есть
ок,
я там язык забыл переключить...
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6689 / 3076 / 1064
Регистрация: 01.06.2021
Сообщений: 11,856
17.12.2023, 23:53
XLAT, в питоне я теперь 11-й в топе (хотя, у 7-10 показатели хуже, не знаю, почему я 11)

загрузил новый код, т.к. только что узнал, что размер кода влияет на рейтинг

Python
1
2
3
4
5
i=input
i()
a = [*map(int, i().split())]
a.sort()
print(max(a[0]*a[1]*a[-1],a[-1]*a[-2]*a[-3]))
1
Just Do It!
 Аватар для XLAT
4221 / 2686 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
18.12.2023, 00:13
Royal_X,


C++
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
#include <vector>
#include <iostream>
#include <algorithm>
 
using namespace std;
 
int main()
{
    std::ios::sync_with_stdio(false);
     
    long long n = 0, x = 0, i = 0, x1, x2;
    cin >> n;
     
    std::vector<long long> a(n);
     
    for (i = 0; i < n; i++)
        cin >> a[i];
         
    std::partial_sort(a.rbegin(), a.rbegin() + 3, a.rend(), std::greater{});
    std::partial_sort(a.begin (), a.begin () + 3, a.end ());
     
    x1 = a[0] * a[1] * a[n - 1];
    x2 = a[n - 3] * a[n - 1] * a[n - 2];
    if (x1 <= x2) x = x2;
    else if (x1 > x2) x = x1;   
    cout << x;
    return 0;
}
пока на этом всё ...

простой сорт можъ афтор глянет.
1
Just Do It!
 Аватар для XLAT
4221 / 2686 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
18.12.2023, 00:16
Цитата Сообщение от Royal_X Посмотреть сообщение
в питоне я теперь 11-й в топе (хотя, у 7-10 показатели хуже, не знаю, почему я 11)
по скорости и по памяти я питон сделал)))
ну и сам С++ вне конкуренции...
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6689 / 3076 / 1064
Регистрация: 01.06.2021
Сообщений: 11,856
18.12.2023, 00:19
Цитата Сообщение от XLAT Посмотреть сообщение
std::ios::sync_with_stdio(false);
вот это волшебство помогло

принял код с обычным sort, но у тебя по времени немного лучше
Миниатюры
Как снизить время выполнения этой программы?  
1
Just Do It!
 Аватар для XLAT
4221 / 2686 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
18.12.2023, 00:24
Цитата Сообщение от Royal_X Посмотреть сообщение
вот это волшебство помогло
вишь, почему я не люблю тут решать афторам олимпиадные задачи -
потому что без валидатора решать их не интересно,
и даже контрпродуктивно.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6689 / 3076 / 1064
Регистрация: 01.06.2021
Сообщений: 11,856
18.12.2023, 00:29
XLAT, на самом деле, даже с валидатором было не очень круто. Из-за глючного валидатора, я потерял к задаче интерес. Теперь буду знать, что когда ТС говорит, что код не подходит, то возможно просто валидатор глючит.

Добавлено через 38 секунд
Цитата Сообщение от XLAT Посмотреть сообщение
по скорости и по памяти я питон сделал)))
да, но в С++, наверное, будет сложно попасть в топ. У тебя код 370 знаков. Надо сократить.
0
Just Do It!
 Аватар для XLAT
4221 / 2686 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
18.12.2023, 00:34
Цитата Сообщение от Royal_X Посмотреть сообщение
да, но в С++, наверное, будет сложно попасть в топ
топ там хитрый:
Code
1
2
3
4
5
В качестве критерия ранжирования лучших попыток служит размер кода закачиваемой программы. 
При подсчете размера кода используется следующая формула:
 
[Размер кода] = max([длина кода без пробелов, табуляций и символов перевода строки], 
[полная длина кода, делённая нацело на 4])
нужны оптимизации другого рода ...

на скорость и память топу пофик.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6689 / 3076 / 1064
Регистрация: 01.06.2021
Сообщений: 11,856
18.12.2023, 00:36
XLAT, оказывается я 12-й в общем топе. Сайт считает, что мое решение на питоне просто шедевральное))) Формула такая, что змеиные коды впереди в топе.

Добавлено через 1 минуту
Цитата Сообщение от XLAT Посмотреть сообщение
топ там хитрый
да, по-моему, сколько не мучайся на С++, змеиные коды будут впереди даже в общем топе из-за краткости


Вот, общий топ данной задачи
1
738 / 705 / 110
Регистрация: 29.05.2015
Сообщений: 4,351
18.12.2023, 00:41
Вроде так:

C++
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
51
52
53
54
55
56
#include <iostream>
using namespace std;
 
int main()
{
    long long n, i, x, x1, x2;
    long long xmax[3] = {-30000, -30000, -30000};
    long long xmin[2] = {30000, 30000};
    cin >> n;
    int a[1000001]{ 0 };
    for (i = 0; i < n; i++)
        cin >> a[i];
 
    for(i = 0; i < n; i++)
    {
        x = a[i];
 
        if(x > xmax[0])
        {
            xmax[2] = xmax[1];
            xmax[1] = xmax[0];
            xmax[0] = x;
            goto met_10;
        }
 
        if(x > xmax[1])
        {
            xmax[2] = xmax[1];
            xmax[1] = x;
            goto met_10;
        }
 
        if(x > xmax[2]) xmax[2] = x;
 
    met_10:
 
        if(x < xmin[0])
        {
            xmin[1] = xmin[0];
            xmin[0] = x;
            goto met_20;
        }
 
        if(x < xmin[1]) xmin[1] = x;
 
    met_20:
        ;
    }
    x1 = xmax[0] * xmax[1] * xmax[2];
    x2 = xmax[0] * xmin[0] * xmin[1];
 
    if (x1 <= x2) x = x2;
    else if (x1 > x2) x = x1;   
    cout << x;
    return 0;
}
2
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6689 / 3076 / 1064
Регистрация: 01.06.2021
Сообщений: 11,856
18.12.2023, 00:42
alexu_007, загрузи на acmp, интересно посмотреть на результат
0
Just Do It!
 Аватар для XLAT
4221 / 2686 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
18.12.2023, 00:43
Цитата Сообщение от Royal_X Посмотреть сообщение
Вот, общий топ данной задачи
да я тебя сразу вычислил по номеру задачи))
0
Just Do It!
 Аватар для XLAT
4221 / 2686 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
18.12.2023, 00:58
alexu_007,
в ваше решение если добавить волшебную строчку, то результат гуд:

по времени идентично с моим, но памяти занимает меньше почти в 2 раза.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6689 / 3076 / 1064
Регистрация: 01.06.2021
Сообщений: 11,856
18.12.2023, 01:01
XLAT, а как ты понял насчёт этой строки?
0
738 / 705 / 110
Регистрация: 29.05.2015
Сообщений: 4,351
18.12.2023, 01:12
Цитата Сообщение от Royal_X Посмотреть сообщение
alexu_007, загрузи на acmp, интересно посмотреть на результат
Time limit exceeded Тест 48 время 1,406

Добавлено через 1 минуту
Цитата Сообщение от XLAT Посмотреть сообщение
в ваше решение если добавить волшебную строчку, то результат гуд:
Какую строчку?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.12.2023, 01:12

Как вы тестируете время выполнения программы?
Добрый день. Вопрос к олимпиадникам: как вы тестируете время выполнения ваших программ во время подготовки? Есть какая-нибудь задача и...

как увеличить время выполнения программы c++?
Можно как то добавить задержку в выполнение программы?

Как сократить время выполнения программы?
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main(){ string S; string T; string A; cin &gt;&gt; S; int...

Как посчитать время выполнения программы?
Как посчитать время выполнения программы? нужно узнать за сколько секунд сортируются данные покажите на примере спасибо...

Подскажите как определить результат выполнения этой программы
Begin n:=30; a:=1; b;=1; for j:= 3 to n do begin b:=a+b; a:=b; end; writeln(’F(’, n - 1, ’)...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru