Задача:
Вы начали составлять график дежурства для роты солдат, но вдруг столкнулись с одним очевидным фактом. Любые два солдата, побывавшие вместе на одном из дежурств, начинают раздражать друг друга. Если два солдата уже дежурили вместе три раза, на четвёртый раз они могут разозлить друг друга настолько сильно, что, очевидно, произойдёт непоправимое.
Поэтому вам нужно составить график дежурства на как можно большее количество дней таким образом, чтобы любые два солдата дежурили вместе не более трёх раз.
Исходные данные
В первой строке записано нечётное число n (3 ≤ n ≤ 99).
Результат
В первой строке выведите целое число k, максимальное количество дней, на которое можно составить график дежурств. В i-й из следующих k строк выведите через пробел номера трёх солдат, которые должны вступить на дежурство в i-й день. Солдаты занумерованы целыми числами от 1 до n.
Мой код:
Program
Pr;
Uses CRT;
Var
n,i,j,t,k:integer;
A:array[1..100,1..100] of integer;
R:array[1..5000,1..3] of integer;
begin
CLRSCR;
Readln(n);
for i:=1 to N do
for j:=1 to N do
if i<>j then A[i,j]:=0 else A[i,j]:=3;
k:=0;
for i:=1 to N do
for j:=1 to n do
for t:=1 to n do
if (A[i,j]<3)and(A[i,t]<3) and(A[j,t]<3) then
begin
inc(k);
R[k,1]:=i;
R[k,2]:=j;
R[k,3]:=t;
inc(A[i,j]);
inc(A[i,t]);
inc(A[j,t]);
inc(A[j,i]);
inc(A[t,i]);
inc(A[t,j]);
end;
writeln(k);
for i:=1 to k do
writeln(R[i,1],' ',R[i,2],' ',R[i,3]);
Readln;
end.