Форум программистов, компьютерный форум CyberForum.ru

Уменьшение времени работы программы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Напишите программу с if http://www.cyberforum.ru/cpp-beginners/thread994684.html
Предположим, что A говорит: "Или я лжец, или два плюс два - пять". К какому заключению можно прийти на основании этого утверждения?
C++ поскажите или напишите программу с циклом if( 29. Предположим, что A говорит: "Или я лжец, или B рыцарь". Кто из двух персонажей A и B рыцарь и кто лжец? http://www.cyberforum.ru/cpp-beginners/thread994681.html
C++ Переменная в TextBox
пишу в TextBox переменную: float p=1; textBox2->Text = p.ToString(); но допустим у меня g=g+1;
Задача по программированию(неудачный перевод кода) C++
Во время экперимента Накодиллы было случайно получено сообщение инопланетян, содержащее формулу вида A + B = C. Общественности стало интересно, какую же систему счисления используют инопланетяне. Так как внеземная цивилизация была достаточно развита, чтобы отправить межпланетное сообщение, Накодилла предположил, что основание системы счисления довольно мало. Требуется написать программу,...
C++ как понять строку declare http://www.cyberforum.ru/cpp-beginners/thread994676.html
SWITCH_DECLARE(const switch_state_handler_table_t *) switch_core_get_state_handler(_In_ int index); не понятно зачем в возвращаемом параметре стоит Слово const
C++ Составить и проверить функцию, которая переставляет цифры заданного целого числа N1 в обратном порядке и получает новое число N2 8. Составить и проверить функцию, которая переставляет цифры заданного целого числа N1 в обратном порядке и получает новое число N2. Например, если N1=425, то N2=524. подробнее

Показать сообщение отдельно
Инспектор Котик
0 / 0 / 0
Регистрация: 06.09.2013
Сообщений: 9
01.11.2013, 16:24     Уменьшение времени работы программы
Добрый вечер. Решил задачу, и решил прогнать по ********. Программа заваливается по времени выполнения, выходит 2.5 секунд, в идеале должно быть не меньше одной. Помогите плиз.
Вот задача:

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

Известный художник решил написать новый шедевр. После многих дней усердной работы он захотел исследовать свое творение. Художник вспомнил, что картина писалась следующим образом: сначала был взят белый холст, имеющий форму прямоугольника шириной w и высотой h. Затем художник нарисовал на этом холсте n прямоугольников со сторонами, параллельными сторонам холста и вершинами, расположенными в целочисленных координатах. Помогите художнику определить площадь незакрашенной части холста.
Входные данные

Первая строка входного файла INPUT.TXT содержит два натуральных числа w и h (1 ≤ w, h ≤ 100). Во второй строке записано целое число n (0 ≤ n ≤ 5000) – количество прямоугольников. Следующие n строк содержат информацию о всех прямоугольниках. Каждая строка описывает один прямоугольник в виде четырех чисел x1, y1, x2, y2 , где (x1, y1) и (x2, y2) – координаты левого верхнего и правого нижнего угла прямоугольника соответственно.
Выходные данные

Выведите в выходной файл OUTPUT.TXT одно целое число – площадь незакрашенной части холста.

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

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <iostream>
 
 
using namespace std;
 
 
int main()
{
    int w = 0;
    int h = 0;
    int n = 0;
    int x1 = 0;
    int y1 = 0;
    int x2 = 0;
    int y2 = 0;
    int c = 0;
 
    cin >> w >> h;
 
    int** canvas = new int*[w];
 
    for(int i = 0; i < w; i++)
    { canvas[i] = new int[h]; }
 
   for(int i = 0; i < w; i++)
    {
            for(int j = 0; j < h; j++)
            {
               canvas[i][j] = 0;
            }
    }
 
   cin >> n;
 
 
   while(n > 0)
   {
       cin >> x1 >> y1 >> x2 >> y2;
 
       for(int i = x1; i < x2; i++)
       {
           for(int j = y1; j < y2; j++)
           {
               canvas[i][j] = 1;
 
           }
       }
 
       n-=1;
 
   }
   cout << endl;
 
 
 
  for(int i = 0; i < w; i++)
   {
       for(int j = 0; j < h; j++)
       {
           if(canvas[i][j] == 1)
           {
               c++;
           }
       }
   }
 
   c = (w * h) - c;
 
   cout << c  << endl;
 
 
 
 
  for(int i = 0; i < w; i++)
       {
            delete[] canvas[i];
       }
 
 
 
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru