Задан массив, состоящий из чисел 1, 2, 3. За одну операцию можно поменять местами два любых числа. Вам необходимо за минимальное количество операций отсортировать массив по не убыванию.
спросил 18 Дек, 18 от cevka в категории школьный раздел


решение вопроса

+7
var
  a     : array [1..1000] of longint;
  b     : array [1..3] of longint;
  i,n,k : longint;
 
  procedure Swap(x,y,z:longint);
    var
      i,j,t : longint;
    begin
      i:=1;
      j:=n;
      while (i<=n) and (j>=1) and (i<j) and (i<=z) do
        begin
          while (i<=n) and (a[i]<>x) do inc(i);
          while (j>=1) and (a[j]<>y) do dec(j);
          if (i<j) and (i<=z)
            then begin
                   t:=a[i]; a[i]:=a[j]; a[j]:=t;
                   inc(i); dec(j);
                   inc(k);
                 end;
        end;
    end;
begin
  readln(n);
  for i:=1 to 3 do b[i]:=0;
  for i:=1 to n do
    begin
      read(a[i]);
      inc(b[a[i]]);
    end;
  Swap(3,1,b[1]);
  Swap(2,1,b[1]);
  Swap(3,2,b[1]+b[2]);
  writeln(k);
end.
ответил 18 Дек, 18 от Olenka

Связанных вопросов не найдено

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

Популярное на сайте:

Как быстро выучить стихотворение наизусть? Запоминание стихов является стандартным заданием во многих школах. 

Как научится читать по диагонали? Скорость чтения зависит от скорости восприятия каждого отдельного слова в тексте. 

Как быстро и эффективно исправить почерк?  Люди часто предполагают, что каллиграфия и почерк являются синонимами, но это не так.

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