実現したいこと
- AtCoder の ABC369 の C問題がACにならない原因を突き止めたいです。
前提
AtCoder の ABC369 の C問題に回答したところ、AC * 19, WA * 2でWAとなりました。しかし、原因がわかりません。
問題のページのurlを以下に添付します。
https://atcoder.jp/contests/abc369/tasks/abc369_c
言語はC#を用いています。
アルゴリズムは尺取り法を用いました。
該当のソースコード
C#
1var n = long.Parse(Console.ReadLine()); 2var a = Console.ReadLine().Split(' ').Select(x => long.Parse(x)).ToList(); 3 4var r = 0; 5var ans = 0; 6for (int l = 0; l < n; l++) // l から始まる等差数列の数をansに足していく 7{ 8 while (true) 9 { 10 if ((r > l + 1 && a[r] - a[r - 1] != a[l + 1] - a[l])) // r を含めると等差数列が終わる 11 { 12 r--; // 手前までは等差数列 13 ans += r - l + 1; 14 break; 15 } 16 else if (r == n - 1) // 最後まで到達し、尚且つ等差数列である 17 { 18 ans += r - l + 1; 19 break; 20 } 21 r++; 22 } 23} 24Console.WriteLine(ans);
試したこと
-
問題のページにある入力例を入力し、出力が出力例と一致することを確認しました。
-
極端な場合として N = 1の場合と、Aiが10^9に近い場合を試し、想定通りの出力であることを確認しました。
-
ChatGPTを用いて原因究明を試みましたが、失敗に終わりました。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2025/01/11 07:05
2025/01/11 07:11