Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 09.06.2019
Сообщений: 35

Уменьшение времени работы кода

18.07.2019, 20:09. Показов 2294. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, есть код:
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
#include <iostream>
using namespace std;
int main(){
 
int a , b , c, d  = 100001,e;
cin >> a;
int mas[a];
for (int i = 0; i < a; i++)
cin >> mas[i];
 
cin >> b;
///////////////////////////////////////////////////////////
cin >> c;
d = c;
e = mas[0];
for(int i = 0 ; i < a; i++){
 
 
if (abs(d - e) > abs (c - mas[i])){
 
  d = c;
  e = mas[i];
 
 
 
 
 
}
 
 
}
for (int i = 0; i < b - 1; i++){
cin >> c;
for (int l = 0 ; l < a; l++ ){
if (abs(d - e) > abs (c - mas[l])){
 
  d = c;
  e = mas[l];
 
}
}
}
 
 
cout << e << " " << d;;
 
 
return 0;
}
Ответы дает правильно, а вот по времени нет. Помогите ускорить код.
вот задача:
Глеб обожает шоппинг. Как-то раз он загорелся идеей подобрать себе майку и штаны так, чтобы выглядеть в них максимально стильно. В понимании Глеба стильность одежды тем больше, чем меньше разница в цвете элементов его одежды.

В наличии имеется N (1 ≤ N ≤ 100 000) маек и M (1 ≤ M ≤ 100 000) штанов, про каждый элемент известен его цвет (целое число от 1 до 10 000 000). Помогите Глебу выбрать одну майку и одни штаны так, чтобы разница в их цвете была как можно меньше.

Входные данные
Сначала вводится информация о майках: в первой строке целое число N (1 ≤ N ≤ 100 000) и во второй N целых чисел от 1 до 10 000 000 — цвета имеющихся в наличии маек. Гарантируется, что номера цветов идут в возрастающем порядке (в частности, цвета никаких двух маек не совпадают).

Далее в том же формате идёт описание штанов: их количество M (1 ≤ M ≤ 100 000) и в следующей строке M целых чисел от 1 до 10 000 000 в возрастающем порядке — цвета штанов.

Выходные данные
Выведите пару неотрицательных чисел — цвет майки и цвет штанов, которые следует выбрать Глебу. Если вариантов выбора несколько, выведите любой из них.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.07.2019, 20:09
Ответы с готовыми решениями:

Уменьшение времени работы программы
Добрый вечер. Решил задачу, и решил прогнать по acmp.ru. Программа заваливается по времени выполнения, выходит 2.5 секунд, в идеале должно...

Измерение времени работы кода
Нужно подсчитать время выполнения кода. данный отрывок сортирует массив. если размер массива маленький, то выводит 0. При большом размере...

Замер времени работы участка кода
Сразу скажу что меня не интересуют стандартные замеры времени роботы участка кода, так как они показывают время роботы данного участка кода...

3
490 / 286 / 129
Регистрация: 30.10.2018
Сообщений: 1,309
18.07.2019, 21:26
kerb4k, а что делает второй цикл?

Добавлено через 2 минуты
Цитата Сообщение от kerb4k Посмотреть сообщение
int a , b , c, d *= 100001,e;
с такими названиями и без коментариев мало что будет смотреть твой код
0
863 / 513 / 215
Регистрация: 19.01.2019
Сообщений: 1,216
19.07.2019, 01:45
Лучший ответ Сообщение было отмечено kerb4k как решение

Решение

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
#include <iostream>
#include <vector>
 
int main()
{
    int tsize;
    std::cin >> tsize;
    if (tsize < 1 || tsize >100000) {
        return 1;
    }
    std::vector<int> tshirt(tsize);
    for (int i = 0; i < tsize; ++i) {
        std::cin >> tshirt[i];
    }
 
    int psize;
    std::cin >> psize;
    if (psize < 1 || psize >100000) {
        return 1;
    }
    std::vector<int> pants(psize);
    for (int i = 0; i < psize; ++i) {
        std::cin >> pants[i];
    }
 
    std::vector<int>::iterator it1 = tshirt.begin();
    std::vector<int>::iterator it2 = pants.begin();
    std::vector<int>* p1 = &tshirt;
    std::vector<int>* p2 = &pants;
    int tclr = *it1, pclr = *it2;
 
    while (it1 != p1->end() && it2 != p2->end()) {
        if (abs(*it1 - *it2) < abs(tclr - pclr)) {
            tclr = *it1; pclr = *it2;
        }
        *it1 < *it2 ? ++it1 : ++it2;
    }
    std::cout << tclr << " " << pclr << '\n';
 
    return 0;
}
0
0 / 0 / 0
Регистрация: 09.06.2019
Сообщений: 35
19.07.2019, 22:56  [ТС]
Большое спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.07.2019, 22:56
Помогаю со студенческими работами здесь

Уменьшение времени выполнения цикла
Нужна помощь, мне надо засечь время выполнения цикла, который инициализирует элементы массива. А потом надо как-то развернуть цикл и...

Уменьшение\Увеличение времени (посфикс,префикс)
Добрый день! Имеется задание на уменьшение и увеличение времени инкрементом (постфикс,префикс). На данный момент имею код но...

Уменьшение исполняемого кода на этапе компиляции
Существует набор регистров (переменных), которые нужно заполнять. Например есть набор Reg1...Reg10 В зависимости от режима работы,...

Советы по ускорению работы кода + оценка самого кода
Вчера вечером сел написать 3 консольные программки для работы с шаблонами размножения текста: 1.Выборка групп синонимов(создание словаря)...

Определение времени выполнения кода
Нужно определить сколько выполняется тот или иной цикл, подскажите поз, как это сделать


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru