Вася, решая предыдущую задачу, написал следующую программу:
const nmax=100; var a:array[1..nmax] of integer; n:integer; procedure swap(var x,y:integer); begin x:=x+y; y:=x-y; x:=x-y; end; procedure readdata; var i:integer; begin read(n); for i:=1 to n do read(a[i]); end; function min(q,w:integer):integer; var i,j:integer; begin j:=a[q]; for i:=q+1 to w do if a[i]<a[j] then j:=i; min:=j; end; procedure sort; var i,j:integer; begin for i:=1 to n-1 do begin j:=min(i,n); swap(a[i],a[j]); end; end; procedure writedata; var i:integer; begin for i:=1 to n do write(a[i],' '); end; BEGIN readdata; sort; writedata; END.
Вася использовал метод сортировки выбором минимумов - на каждом шаге он в оставшейся части массива (c i-го по n-ый элемент) находит наименьший элемент, и ставит его на i-ое место, а элемент с i-го места - на место найденного элемента, таким образом, после шага номер i первые i элементов оказываются на своих местах.
Написав программу, Вася ввел тест из условия задачи:
5 3 1 2 4 2и убедился, что программа работает верно.
Однако оказывается, что в некоторых случаях программа выдает неверный ответ. Задание: