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

Подскажите, пожалуйста, как можно оптимизировать код - C++

Восстановить пароль Регистрация
 
ram2303
Сообщений: n/a
28.10.2013, 17:32     Подскажите, пожалуйста, как можно оптимизировать код #1
Здравствуйте, уже второй день мучаюсь с одной программой. Сегодня получилось ее дописать, но сайт не принимает, ссылаясь на превышение максимального времени работы. Помогите, пожалуйста, оптимизировать мой код. Программирую
всего второй месяц, пытался сам поколдовать над кодом, но все никак не выходит...

Условие задачи:
В одной компьютерной игре игрок выставляет в линию шарики разных цветов. Когда образуется непрерывная цепочка из трех и более шариков одного цвета, она удаляется из линии. Все шарики при этом сдвигаются друг к другу, и ситуация может повториться.

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

Формат входного файла

Даны количество шариков в цепочке (не более 1000) и цвета шариков (от 0 до 9, каждому цвету соответствует свое целое число).

Формат выходного файла

Требуется вывести количество шариков, которое будет уничтожено.

Ограничение по времени, сек - 4
Ограничение по памяти, мегабайт - 64

Примеры
Ввод:
5 1 3 3 3 2
Вывод:
3

Ввод:
10 3 3 2 1 1 1 2 2 3 3
Вывод:
10
Мой код:
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
#include <iostream>
#include <cmath>
 
using namespace std;
 
 
 
int main () {
   int n,i,s,b,w=1,ans=0;
   cin >> n;
 
   int a[n];
 
   for (i=0; i<n; i++) {
 
   cin >> a[i];
 
   }
 
 
 
 
 
                     do {
                   
 
                       s=2;
                       
 
   for (i=1; i<n-w; i++) {
 
   
   if (a[i]==a[i-1] && a[i]==a[i+1] && s==2) {b=i-1;}
   if (a[i]==a[i-1] && a[i]==a[i+1]) {s=s+1;}
  
   else if (s>2) {break;}
 
   }  
 
 
 
   if (s!=2) {
 
   for (i=b; i<b+s; i++) {
 
   a[i]=-1;
 
   }
 
 
 
   for (i=0; i<n-s; i++) {
 
 
   if (a[i]==-1) { swap (a[i],a[i+s]);}
 
 
   }
 
 
                 }
             
 
 
           if (s!=2) {w=s+1; ans=ans+s;}
                  
           
            } while (s!=2);
                   
                   
 
 
   cout << ans;      
     
 
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2013, 17:32     Подскажите, пожалуйста, как можно оптимизировать код
Посмотрите здесь:

Вот код, подскажите как исправить ошибку, пожалуйста??? C++
C++ Подскажите, пожалуйста, где можно скачать компилятор Cl.exe
C++ Как оптимизировать код?
C++ Подскажите, как можно упростить/укоротить код - мини-калькулятора?
C++ Регистрация и авторизация пользователя - можно ли оптимизировать код
C++ Как оптимизировать данный код игры крестики нолики?
Парсер математических выражений - можно ли оптимизировать и улучшить код C++
C++ Как оптимизировать код, со множеством операторов if?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 10:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru