profile
Размещено 6 лет назад по предмету Информатика от Колян2281337

вывод стандартный
вывод стандартный

Вова выиграл в олимпиадах n кубков. Каждый кубок либо золотой, либо серебряный. Все кубки расположены в ряд один за другим. Красотой расположения кубков Вова называет длину максимального подотрезка из золотых кубков. Вова хочет поменять местами не более одной пары кубков (не обязательно соседних) так, чтобы сделать расположение кубков максимально красивым — максимизировать длину наибольшего подотрезка из золотых кубков. Помогите Вове! Сообщите, какую максимальную длину наибольшего подотрезка из золотых кубков он может получить, поменяв местами не более одной пары кубков. Входные данные Первая строка содержит число n (2≤n≤105) — количество выигранных Вовой кубков. Вторая строка содержит последовательность из n символов G и S. Если i-й символ равен G, то i-й кубок золотой, иначе — серебряный. Выходные данные В единственной строке выведите максимальную длину наибольшего подотрезка из золотых кубков, которую Вова может получить, поменяв местами не более одной пары кубков.



тесты:
ввод:
10
GGGSGGGSGG

вывод:
7

  1. Ответ на вопрос
    Ответ на вопрос дан srzontmp

    Если будете сдавать в тестирующей системе, то вместо string, лучше использовать массив char - работает быстрее.

    var n,i,k,p,mx,mxj: integer;

       s: array[1..100000] of char;

    begin

     readln(n);

     for i:=1 to n do read(s[i]);

     k:=0; p:=0;

     mx:=0; mxj:=0;

     for i:=1 to n do

     begin

       if s[i]='G' then k:=k+1

       else

       begin

         if p=1 then

         begin

           p:=0;

           if s[i-1]='G' then  

           if (k>mxj) then mxj:=k;

           k:=0;

         end

         else

         begin

           if k>0 then p:=1;

           if k>mx then mx:=k;

         end;

       end;  

     end;

     if mx>mxj then k:=mx+1

     else k:=mxj+1;

     if k=1 then k:=0;

     writeln(k);

    end.


    1. Ответ на вопрос
      Ответ на вопрос дан srzontmp
      var n,i,k,p,mk,mx: integer;
      s: array[1..100000] of char;
      begin
      readln(n);
      for i:=1 to n do read(s[i]);
      k:=0; p:=0;
      mx:=0; mk:=0;
      for i:=1 to n do
      begin
      if s[i]='G' then k:=k+1
      else
      begin
      if p=1 then
      begin
      if s[i-1]='G' then
      begin
      if (k>mx) then mx:=k;
      k:=k-mk;
      mk:=k;
      end
      else
      begin
      k:=0;
      mk:=0;
      p:=0;
      end;
      end
      else
      if k>0 then
      begin
      p:=1;
      mk:=k;
      if k>mx then mx:=k;
      end;
      end;
      end;
      k:=max(k,mx)+1;
      if k=1 then k:=0;
      writeln(k);
      end.
    2. Ответ на вопрос
      Ответ на вопрос дан srzontmp
      Это исправленный вариант. В предыдущем не учитывалось, если самая длинная последовательность в конце.
Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 6 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.