Submission #41831796


Source Code Expand

# debug = true
debug = false
A_TIME, SHIFT_A_TIME, CAPS_LOCK_TIME = gets.split.map(&:to_i)
INPUT_BYTES = gets.chomp.bytes
SMALL_BYTE, LARGE_BYTE = 'aA'.bytes

dp = Array.new(2) { [] }
dp[0] << 0
dp[1] << CAPS_LOCK_TIME

INPUT_BYTES.each_with_index do |byte, i|
  if byte == SMALL_BYTE
    dp[0][i + 1] = [dp[0][i] + A_TIME, dp[1][i] + CAPS_LOCK_TIME + A_TIME].min
    dp[1][i + 1] = [dp[0][i] + CAPS_LOCK_TIME + SHIFT_A_TIME, dp[1][i] + SHIFT_A_TIME].min
  else
    dp[0][i + 1] = [dp[0][i] + SHIFT_A_TIME, dp[1][i] + CAPS_LOCK_TIME + A_TIME].min
    dp[1][i + 1] = [dp[0][i] + CAPS_LOCK_TIME + SHIFT_A_TIME, dp[1][i] + A_TIME].min
  end
  dp[0][i + 1] = [dp[0][i + 1], dp[1][i + 1] + CAPS_LOCK_TIME].min
  dp[1][i + 1] = [dp[1][i + 1], dp[0][i + 1] + CAPS_LOCK_TIME].min
end
p dp if debug
puts [dp[0][-1], dp[1][-1]].min

__END__


dp[0][j+1] = dp[0][j] + x
dp[1][j+1] = dp[1][j] + y
# とした後に、
dp[0][j+1] = min(dp[0][j+1], dp[1][j+1] + z)
dp[1][j+1] = min(dp[1][j+1], dp[0][j+1] + z)

Submission Info

Submission Time
Task D - Shift vs. CapsLock
User HalMat
Language Ruby (2.7.1)
Score 400
Code Size 1028 Byte
Status AC
Exec Time 167 ms
Memory 21960 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 3
AC × 31
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_small_00.txt, 01_small_01.txt, 01_small_02.txt, 01_small_03.txt, 01_small_04.txt, 01_small_05.txt, 01_small_06.txt, 01_small_07.txt, 01_small_08.txt, 01_small_09.txt, 02_rnd_00.txt, 02_rnd_01.txt, 02_rnd_02.txt, 02_rnd_03.txt, 02_rnd_04.txt, 02_rnd_05.txt, 02_rnd_06.txt, 02_rnd_07.txt, 02_rnd_08.txt, 02_rnd_09.txt, 03_max_00.txt, 03_max_01.txt, 03_max_02.txt, 03_max_03.txt, 04_border_00.txt, 04_border_01.txt, 04_border_02.txt, 04_border_03.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 72 ms 14240 KiB
00_sample_01.txt AC 52 ms 14148 KiB
00_sample_02.txt AC 55 ms 14000 KiB
01_small_00.txt AC 55 ms 14176 KiB
01_small_01.txt AC 55 ms 14156 KiB
01_small_02.txt AC 55 ms 14080 KiB
01_small_03.txt AC 56 ms 14004 KiB
01_small_04.txt AC 56 ms 14072 KiB
01_small_05.txt AC 56 ms 13988 KiB
01_small_06.txt AC 55 ms 13964 KiB
01_small_07.txt AC 55 ms 14108 KiB
01_small_08.txt AC 55 ms 14088 KiB
01_small_09.txt AC 55 ms 13976 KiB
02_rnd_00.txt AC 163 ms 21916 KiB
02_rnd_01.txt AC 151 ms 20836 KiB
02_rnd_02.txt AC 151 ms 20824 KiB
02_rnd_03.txt AC 133 ms 19628 KiB
02_rnd_04.txt AC 136 ms 19788 KiB
02_rnd_05.txt AC 126 ms 19276 KiB
02_rnd_06.txt AC 143 ms 19912 KiB
02_rnd_07.txt AC 120 ms 18564 KiB
02_rnd_08.txt AC 151 ms 20660 KiB
02_rnd_09.txt AC 115 ms 18356 KiB
03_max_00.txt AC 167 ms 21924 KiB
03_max_01.txt AC 162 ms 21884 KiB
03_max_02.txt AC 161 ms 21884 KiB
03_max_03.txt AC 165 ms 21824 KiB
04_border_00.txt AC 160 ms 21828 KiB
04_border_01.txt AC 162 ms 21796 KiB
04_border_02.txt AC 160 ms 21884 KiB
04_border_03.txt AC 163 ms 21960 KiB