Домашние задания: Информатика

Помощь с информатикой!

Mikiii M
Mikiii M
150
Держи:
 program FindM4;
const N = 1000;
var m4agg: array[0..3] of record
c: shortint;
m, n: longint
end;
s: array[0..2] of longint;
i, k: shortint;
p: longint;
function comb2(n: shortint): integer;
begin
comb2 := n * (n - 1) div 2
end;
begin
for k := 0 to 3 do begin
m4agg[k].c := 0;
m4agg[k].m := 0;
m4agg[k].n := 0
end;
for i := 1 to N do begin
read(p);
k := p mod 4;
m4agg[k].c := m4agg[k].c + 1;
if m4agg[k].m < p then begin
m4agg[k].n := m4agg[k].m;
m4agg[k].m := p
end else if m4agg[k].n < p then
m4agg[k].n := p
end;
if m4agg[0].n = 0 then s[0] := 0
else s[0] := m4agg[0].m + m4agg[0].n;
if m4agg[1].m * m4agg[3].m = 0 then s[1] := 0
else s[1] := m4agg[1].m + m4agg[3].m;
if m4agg[2].n = 0 then s[2] := 0
else s[2] := m4agg[2].m + m4agg[2].n;
k := ord(s[1] > s[0]);
if s[2] > s[k] then k := 2;
if k mod 2 = 1 then p := m4agg[3].m
else p := m4agg[k].n;
writeln(comb2(m4agg[0].c) + m4agg[1].c * m4agg[3].c + comb2(m4agg[2].c),
' ', m4agg[k].m, ' ', p)
end.
Файл сам приделай, это тривиально. Просто читаешь read(f, p), где f - открытый файл.
Для проверки на 4-х мечах подмени значение N на 4.

Какой примитивный и бюрократичный язык... простая задача занимает 40 строк. Даже не хочется вспоминать, как там файлы открываются.
Изучай Хаскель, там это в 5 строк можно сделать.
Аита Чырмашева
Аита Чырмашева
87 571
Лучший ответ
Mikiii M спасибо большое!