with Ada.Text_IO;
procedure Day01_2 is
type Max_List is array (1 .. 3) of Natural;
Input : Ada.Text_IO.File_Type;
Max : Max_List := (others => 0);
Sum : Natural;
begin -- Day01_2
Ada.Text_IO.Open (File => Input, Mode => Ada.Text_IO.In_File, Name => "input_01_1");
All_Elves : loop
exit All_Elves when Ada.Text_IO.End_Of_File (Input);
Sum := 0;
All_Food : loop
exit All_Food when Ada.Text_IO.End_Of_File (Input);
One_Food : declare
Line : constant String := Ada.Text_IO.Get_Line (Input);
begin -- One_Food
exit All_Food when Line = "";
Sum := Sum + Integer'Value (Line);
end One_Food;
end loop All_Food;
if Sum > Max (1) then
Max := Sum & Max (1 .. 2);
elsif Sum > Max (2) then
Max := Max (1) & Sum & Max (2);
elsif Sum > Max (3) then
Max := Max (1 .. 2) & Sum;
else
null;
end if;
end loop All_Elves;
Ada.Text_IO.Close (File => Input);
Ada.Text_IO.Put_Line (Item => Integer'Image (Max (1) + Max (2) + Max (3) ) );
end Day01_2;