Тема: Допоможіть розібратись в чому помилка
Допоможіть розібратись. Недавно попалась задача:
Зеник з Марічкою зголосились допомагати на кухні. Всього є три різні страви: борщ, картопля і салат. У Зеника і Марічки є 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.

