質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
GCC

GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

1204閲覧

atcoder ABC140 B問題において自分の環境では答えが通るのに、提出結果がREになる

rdld036

総合スコア16

GCC

GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/10/17 06:14

前提・実現したいこと

atcoder ABC140のB問題において、以下のコードを提出したところ、いくつかのケースでREとなりました。私はgcc11.0.3を使っているのですが、そこでは答えも合っていて問題ありません。
エラーとなる原因はどこにあると考えられますか。

該当のソースコード

C++

1#include <bits/stdc++.h> 2 3using namespace std; 4 5int main() 6{ 7 ios::sync_with_stdio(false); 8 int N; cin >> N; 9 int A[N] = {}; int B[N] ={}; int C[N - 1] = {}; 10 for(int i = 1; i < N + 1; i++){ 11 cin >> A[i]; 12 } 13 for(int i = 1; i < N + 1; i++){ 14 cin >> B[i]; 15 } 16 for(int i = 1; i < N; i++){ 17 cin >> C[i]; 18 } 19 int ans = 0; 20 ans += B[A[1]]; 21 for(int i = 2 ; i <= N; i++){ 22 if(A[i] == A[i - 1] + 1){ 23 ans += C[A[i - 1]]; 24 } 25 ans += B[A[i]]; 26 } 27 cout << ans << endl; 28} 29

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

int A[N] = {}; int B[N] ={}; int C[N - 1] = {};

配列 A の添え字は A[0]~A[N-1] まで。にもかかわらず

for(int i = 1; i < N + 1; i++){

cin >> A[i]; }

A[N] に書き込んでる。範囲外アクセス。

※ B, C も同様。

投稿2020/10/17 06:42

episteme

総合スコア16612

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rdld036

2020/10/17 08:06

解決しました。i < N + 1にするなら配列A, B, Cのサイズをそれぞれ+1するべきでした。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問