Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача про шашки
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
LammerzAttack
Помогите решить задачу:
Имя входного файла: checkers.in
Имя выходного файла: checkers.out
Ограничение по памяти: 1 Мб
Ограничение по времени: 1 с

На квадратной доске N×N стоят N шашек. За один ход можно подвинуть на соседнюю по вертикали или горизонтали клетку. Сколько требуется ходов, чтобы составить их все в один горизонтальный ряд?
Формат входного файла

В первой строке натуральное число N < 32768. В следующих N строках по два натуральных числа, не превосходящих N — координаты шашек.
Формат выходного файла

Минимальное количество ходов, необходимых чтобы составить все шашки в один горизонтальный ряд.
Пример
checkers.in

4
1 1
2 2
3 3
4 4

checkers.out
4

Пока ксть идея, что координата горизонтали на которой будут расположенны шашки равеа среднему арифметическому координат всех шашек по оси y.
LammerzAttack
Если кому интересно то вот решение:
Код

program checkers;
type
a=record
x,y:integer;
end;

var
c:array [1..32768] of a;
f,f1:text;
i,n:integer;
sum,sumsh:int64;

begin
assign(f,'checkers.in');
assign(f1,'checkers.out');
reset(f);
rewrite(f1);
readln(f,n);
sumsh:=0;
sum:=0;
for i:=1 to n do readln(f,c[i].x,c[i].y);
{Сюда надо вставить сортировку массива c.x по возрасстанию}
for i:=1 to n do sum:=sum+c[i].y;
sum:=round(sum/n);
for i:=1 to n do sumsh:=sumsh+abs(c[i].x-i);
for i:=1 to n do sumsh:=sumsh+abs(c[i].y-sum);;
writeln(f1,sumsh);
close(f1);
end.


Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.