Тема: Допоможіть розібратись в чому помилка
Допоможіть розібратись. Недавно попалась задача:
Зеник з Марічкою зголосились допомагати на кухні. Всього є три різні страви: борщ, картопля і салат. У Зеника і Марічки є N друзів. i-тий друг хоче зїсти Ai - грам борщу, Ві - грам картоплі і Сі- грам салату. Якщо друг Зеника і Марічки хоче зїсти X грам певної страви, а йому у тарілку поклали Y грам, то ступінь недовіри до Зеника і Марічки зросте на abs(X-Y) одиниць. Зенику з Марічкою наказали всім покласти однакові порції певної страви. Тобто кожному другу необхідно покласти А- грам борщу, В- грам картоплі і С-грам салату. Допоможіть Зенику і Марічці обрати такі А, В, С, щоб сумарний ступінь недовіри всіх друзів був якомога меншим.
Вхідні дані: В першому рядку задане ціле число N кількість друзів.
В наступних N рядках записано по три цілих числа Ai, Bi, Ci кількість борщу, картоплі і салату, що хоче отримати і-тий друг.
Обмеження: 2<=N<=100000
0<= Ai, Bi, Ci<=10000
Приклад:
Вхідні дані: 2
10 50 100
70 10 50
Результат: 150
Примітки: Одним з оптимальних варіантів вибору для Зеника і Марічки буде А=40, В=30, С=75.
Я написав код, але проходить лише 5 тестів. Ось він:
var
A: array of int64;
B: array of int64;
C: array of int64;
i, Ai, Bi, Ci, Ac, Bc, Cc, n, s: int64;
begin
s := 0; Ac := 0; Bc := 0; Cc := 0;
read(n);
setlength(A, n);
setlength(B, n);
setlength(C, n);
for i := 0 to n - 1 do
begin
read(A[i]);
Ac := Ac + A[i];
read(B[i]);
Bc := Bc + B[i];
read(C[i]);
Cc := Cc + C[i];
end;
Ac := Ac div n; Bc := Bc div n; Cc := Cc div n;
for i := 0 to n - 1 do
s := s + abs(Ac - A[i]) + abs(Bc - B[i]) + abs(Cc - C[i]);
write(s);
end.