Python 3.5
k = int(input())
s = 0
n = k*(k-1)+1
m = 0
while m < k:
s = s + n
n = n + 2
m = m + 1
print(s)
Алгоритм такой:
1. Если массив закончился, завершить программу. Иначе к п.2
2. Освободить дырку справа
3. Найти правую границу массива, поставить там метку и вернуться к левой границе массива из оставшихся точек.
4. Вернуться к п. 1.
![1.\hspace{1em} \rightarrow 2 \\ 2.\hspace{1em} ? 15; 3 \\ 3.\hspace{1em} \rightarrow 10 \\ 4.\hspace{1em} X\hspace{0.5em} 5 \\ 5.\hspace{1em} \rightarrow 6 \\ 6.\hspace{1em} ? 7; 5 \\ 7.\hspace{1em} V\hspace{0.5em} 8 \\ 8.\hspace{1em} \leftarrow 9 \\ 9.\hspace{1em} ? 1; 8 \\ 10.\hspace{1em} ? 11; 4 \\ 11.\hspace{1em} ! \\](https://tex.z-dn.net/?f=1.%5Chspace%7B1em%7D+%5Crightarrow+2+%5C%5C%0A2.%5Chspace%7B1em%7D+%3F+15%3B+3+%5C%5C%0A3.%5Chspace%7B1em%7D+%5Crightarrow+10+%5C%5C%0A4.%5Chspace%7B1em%7D+X%5Chspace%7B0.5em%7D+5+%5C%5C%0A5.%5Chspace%7B1em%7D+%5Crightarrow+6+%5C%5C%0A6.%5Chspace%7B1em%7D+%3F+7%3B+5+%5C%5C%0A7.%5Chspace%7B1em%7D+V%5Chspace%7B0.5em%7D+8+%5C%5C%0A8.%5Chspace%7B1em%7D+%5Cleftarrow+9+%5C%5C%0A9.%5Chspace%7B1em%7D+%3F+1%3B+8+%5C%5C%0A10.%5Chspace%7B1em%7D+%3F+11%3B+4+%5C%5C%0A11.%5Chspace%7B1em%7D+%21+%5C%5C)
Const
n=10;
var
i,j,k,m,buf:integer;
a:array[1..n,1..n]of integer;
begin
for i:=1 to n do
begin
writeln;
for m:=1 to n do
begin
a[i,m]:=random(20);
write(a[i,m]:4);
end;
end;
writeln;
writeln('k,j ?');
readln(k,j);
for m:=1 to n do
begin
buf:=a[k,m];
a[k,m]:=a[j,m];
a[j,m]:=buf;
end;
for i:=1 to n do
begin
writeln;
for m:=1 to n do
write(a[i,m]:4);
end;
end.