Код
//PascalABC.NET версия 3.2, сборка 1389
//Если программа не запускается, то обновите версию
uses System;
const
n = 2014;
begin
var a := ArrGen(n, i -> i * Power(-1, i), 1);
Println(a);
var max := a.Sum();
for var i := 1 to n - 1 do
for var j := i + 1 to n do
begin
var b := Arr(a);
for var k := b.Low to b.High do
begin
if abs(b[k]) = i then
b[k] := sign(b[k]) * j
else if abs(b[k]) = j then
b[k] := sign(b[k]) * i;
end;
var sum := b.Sum();
if (max < sum) and (sum > 2000) then begin
Println(i, j, sum);
Println(b);
max := sum;
end;
end;
Println(max);
end.
Ответ
Обмен (2; 2013)
Сумма = 5029