program yukicoder_2854 use, intrinsic :: iso_fortran_env implicit none integer(int64), parameter :: infini = ishft(1_int64, 55) integer(int32) :: n integer(int64), allocatable :: arr(:), dp(:, :) integer(int32) :: i read(input_unit, *) n allocate(arr(n)) read(input_unit, *) arr(:) allocate(dp(-1:1, 0:n), source = -infini) dp(-1, :) = 0_int64 do i = 1, n !> 今の長さが偶数(0). dp(0, i) = max(dp(0, i - 1), dp(1, i - 1) + arr(i)) !> 今の長さが奇数(1). dp(1, i) = max(dp(1, i - 1), dp(0, i - 1) - arr(i), dp(-1, i - 1) - arr(i)) end do ! do i = 1, n ! write(error_unit, '(*(g0, 1x))') i, ":", dp(:, i) ! end do write(output_unit, '(i0)') maxval(dp(0:1, n)) end program yukicoder_2854