前提・実現したいこと
以下のAtcoderの問題について、
(https://atcoder.jp/contests/abc214/tasks/abc214_c)
問題文中のサンプルでは全て正しい答えが導出できたのですが
実際に提出したところ殆どのケースで誤答になってしまいました。
自分ではどこを間違えているのか突き止めることができなかったため、
コード・考え方のミスを指摘していただきたいです。
言語はJava(Open JDK11.0.6)です。
該当のソースコード
Java
1import java.util.*; 2 3 4public class Main { 5 public static void main(String[] args) { 6 Scanner sc = new Scanner(System.in); 7 int n = sc.nextInt(); 8 int[] s = new int[n]; 9 int[] t = new int[n]; 10 int[] ans = new int[n]; 11 12 for(int i = 0;i < n;i++){ 13 s[i] = sc.nextInt(); 14 } 15 for(int j = 0;j < n;j++){ 16 t[j] = sc.nextInt(); 17 } 18 19 for(int k = 0;k < n;k++){ 20 if(k > 0 && t[k] > ans[k - 1] + s[k - 1]){ 21 ans[k] = ans[k - 1] + s[k - 1]; 22 } else if (k == 0 && t[k] > ans[n - 1] + s[n - 1]){ 23 ans[k] = ans[n - 1] + s[n - 1]; 24 } else { 25 ans[k] = t[k]; 26 } 27 } 28 for(int m = 0;m < n;m++){ 29 System.out.println(ans[m]); 30 } 31 } 32}
試したこと
以下のようにサンプルの値を少し変えたところ、
4
1 2 3 4
8 2 4 7
答えが
4
2
4
7
となってしまい、正解とズレてしまうことは確認しています。
8以外の数値も試してみたところ、5以上では必ず1番目の出力値が
4になってしまうことが分かったのですが、何故4になってしまうか
全く分かりませんでした。