GAECHKA
Твоя помощница в решении задач

Шарики

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

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

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

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

Примеры
входные данные
5 1 3 3 3 2
выходные данные
3
входные данные
10 3 3 2 1 1 1 2 2 3 3
выходные данные
10


Я написала программу, но она проходит только 39 тестов из 49(неверный ответ). Где ошибка и как исправить? помогите, пожалуйста.


var
   a,a1:array[1..1000]of integer;
   n,k,k1,i,i1,i2,n1:integer;
begin
     read(n);
     for i:=1 to n do
         read(a[i]);
     writeln;
     n1:=n;
     k:=3;
     while k>=3 do
           begin
           k:=0;
           k1:=0;
           i:=2;
           while i=n do
               begin
               if a[i]=a[i-1] then
                  begin
                  k1:=k1+1;
                  if k=k1 then
                     k:=k1+1;
                  if i=n then
                     begin
                     if k>=3 then
                        for i1:=1 to i-k do
                            a1[i1]:=a[i1]
                     end
                  end
               else begin
                    if k=k1 then
                       k:=k1+1;
                    k1:=0;
                    if k>=3 then
                       for i1:=1 to i-k-1 do
                           begin
                           a1[i1]:=a[i1];
                           i:=n
                           end
                    end;
               i:=i+1
               end;
           if k>=3 then
              begin
              i1:=i1+1;
              if i1+k-1n then
                 begin
                 for i2:=i1+k to n do
                     begin
                     a1[i1]:=a[i2];
                     i1:=i1+1
                     end
                 end;
              n:=n-k;
              for i:=1 to n do
                  a[i]:=a1[i]
              end
           end;
     writeln(n1-n)
end.
0
вопрос задан

Источник


0 ответов