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

Ускорить программу

04.10.2015, 13:44. Показов 488. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не проходит половину тестов из-за превышения по времени. Как оптимизировать работу в такой элементарной программе?
Условие задачи:
Кликните здесь для просмотра всего текста

Для проведения чемпионата Европы по футболу в Португалии было принято
решение построить К-цветной цифровой экран NxM (N по вертикали, M по
горизонтали) пикселей. Но в связи с тем, что экран очень большой, работать
можно только с прямоугольной областью экрана N1xM1 (N1 по вертикали, M1 по
горизонтали) пикселей. Экран был сконструирован так, что при его включении
цвета пикселям предоставляются случайным образом, а нужно, чтобы все пиксели были
черного (0-го) цвета. Вам необходимо определить минимальное количество операций,
необходимую для того, чтобы сделать из исходного экрана экран черного (0-го) цвета,
или указать, что решения не существует. За одну операцию считается: взять
прямоугольную область экрана N1xM1 (N1 по вертикали, M1 по горизонтали) пикселей,
полностью принадлежит экрана, и все номера цветов этой области увеличить на
единицу по модулю K (т.е. если номер цвета равна K-1, то после увеличение станет 0).
С консоли вводятся: в первой строке два числа через пробел N и M -
размеры экрана; во второй строке - два числа N1 и M1 - размеры прямоугольной
области, в третьей строке - одно число K- количество цветов на экране. Далее следуют
строк N по M чисел, разделенные пробелами, - номере цветов в палитре (все числа
от 1 до K).
Ограничения 1≤N1≤N≤1000, 1≤M1≤M≤1000, 2≤K≤1000.
В консоль вывести минимальное количество операций.

Мое решение:
Кликните здесь для просмотра всего текста

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>
 
using namespace std;
 
const int MAX=1000;
 
void upgrade(int arr[MAX][MAX], int i, int j, int n, int m, int n1, int m1, int k);
 
int main()
{
    int N, M, N1, M1, K, counter=0;
    cin >> N;
    cin >> M;
    cin >> N1;
    cin >> M1;
    cin >> K;
    int arr[MAX][MAX];
    for (int i=0; i<N; i++)
        for (int j=0; j<M; j++)
            cin >> arr[j][i]; ///Ввод
    for (int i=0; i<N-N1+1; i++)
        for (int j=0; j<M-M1+1; j++)
            while(arr[j][i]!=0)
            {
                upgrade(arr, j, i, N, M, M1, N1, K);
                counter++;
            }
    for (int i=0; i<N; i++)
        if (arr[i][M-1]!=0) { cout << "impossible"; return 0; }
    for (int i=0; i<M; i++)
        if (arr[N-1][i]!=0) { cout << "impossible"; return 0; }
    cout << counter;
    return 0;
}
 
void upgrade(int arr[MAX][MAX], int x, int y, int n, int m, int n1, int m1, int k)
{
    for (int i=0; i<n1; i++) ///Увеличиваем все значения в выбранном прямоугольнике на 1
        for(int j=0; j<m1; j++)
            arr[i+x][j+y]=(arr[i+x][j+y]+1)%k; ///Если переполнение - остаток от деления на кол-во цветов
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.10.2015, 13:44
Ответы с готовыми решениями:

Ускорить программу на C++
Требуется ускорить эту программу тесты 7 6 3 4 36 2 2 1 1 2 2 2 1 2 4 ...

Как ускорить программу?
#include &lt;iostream&gt; #include &lt;iterator&gt; #include &lt;functional&gt; #include &lt;limits&gt; #include...

Как ускорить данную программу
И опять магические квадраты...Пытаюсь вычислить все магические квадраты 4-ого порядка, но программа...

Как ускорить данную программу?
#include &lt;iostream&gt; using namespace std; int main() { int n; cin &gt;&gt; n; int A;...

0
04.10.2015, 13:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.10.2015, 13:44
Помогаю со студенческими работами здесь

Как ускорить готовую программу?
Доброго времени суток уважаемые форумчане. Я решил задачу ,но при сдаче исходного кода мне пишет...

Ускорить программу сортировки списка в порядке возрастания
Здраствуйте!Написал код программы.Тесты не проходит из-за превышение времени работы. Суть такова:...

Ускорить программу ответа на запросы различных типов
Дан одномерный целочисленный массив A длины N. Пусть нумерация элементов в массиве начинается с 1 и...

Как ускорить программу за счет большей загруженности процессора?
Имеется программа приведенная ниже.При большой разнице х начального и конечного и малом шаге...

Как ускорить цикл?
Вот фрагмент кода: int main() { for (;;) du(); system(&quot;pause&quot;); return 0; }

Как ускорить работу?
Прога ещё не доработана, сейчас интересует именно графический режим, когда нажимается клавиша 1-4...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru