with Ada.Text_IO;
procedure Day10_1 is
Input : Ada.Text_IO.File_Type;
X : Integer := 1;
Cycle : Natural := 0;
Next : Positive := 20;
Sum : Natural := 0;
begin -- Day10_1
Ada.Text_IO.Open (File => Input, Mode => Ada.Text_IO.In_File, Name => "input_10");
All_Ops : loop
exit All_Ops when Ada.Text_IO.End_Of_File (Input) or Cycle >= 220;
One_Op : declare
Line : constant String := Ada.Text_IO.Get_Line (Input);
begin -- One_Op
Cycle := Cycle + 1;
if Cycle = Next then
Sum := Sum + Cycle * X;
Next := Next + 40;
end if;
if Line (1) = 'a' then
Cycle := Cycle + 1;
if Cycle = Next then
Sum := Sum + Cycle * X;
Next := Next + 40;
end if;
X := X + Integer'Value (Line (6 .. Line'Last) );
end if;
end One_Op;
end loop All_Ops;
Ada.Text_IO.Close (File => Input);
Ada.Text_IO.Put_Line (Item => Sum'Image);
end Day10_1;