
お世話になっております。atCoderの勉強のためにABC135のC問題にトライしてみたのですが、ACにならず、17入力データ中4つしか通りません。プログラムのどこで間違えているのかわからないです。
https://atcoder.jp/contests/abc135/tasks/abc135_c
問題
N+1 個の街があり、
i 番目の街は A_i体のモンスターに襲われています。
N 人の勇者が居て、i 番目の勇者は i 番目または i+1 番目の街を襲っているモンスターを合計でB_i体まで倒すことができます。
N 人の勇者がうまく協力することで、合計して最大で何体のモンスターを倒せるでしょうか。
入力は以下のように与えられる。
N
A_1 A_2 ... A_{N+1}
B_1 B_2 ... B_N
例
2
3 5 2
4 5
=>9
作成したプログラムを以下に示します。
#include <iostream>
#include <vector>
using namespace std;
int main(){
int n, b_i, b_iadd1=0;
int B_i; // i番目の勇者が倒せる怪物の数
int sum = 0;
cin >> n;
vector<int> a(n+2); // 怪物の数
for(int i=1; i<=n+1; i++) cin >> a[i];
for(int i=1; i<=n; i++) {
cin >> B_i;
b_i = min(a[i] - b_iadd1, B_i);
b_iadd1 = min(a[i+1], B_i - b_i);
sum += b_i + b_iadd1;
}
cout << sum;
return 0;
}
改善箇所を教えていただきたいです。よろしくお願いします
No.1ベストアンサー
- 回答日時:
int sum = 0;
を
long long int sum = 0;
に変えてください。
sumの最大値は、10の9乗 × 10の5乗 =10の14乗
になるので、int型では格納できません。
long long int型であれば、十分格納可能です。
ご指摘いただいたように、sumでオーバーフローが生じていたようでした。型を変更することで、無事にacを取れました!今後も一部の入力に対してうまくいかない場合は型の確認をするように注意します!助かりました!!
ベストアンサーが選択可能になったら、1番さんを選ばせていただきます。
ありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C++初心者です stirng 2 2022/09/20 20:43
- C言語・C++・C# C言語でif文が予想と違う動きをする件について7 4 2023/03/20 00:26
- C言語・C++・C# プログラミングを教えて欲しいです。 配列aは、int a[9]={7,6,12,8,3,5,10,9 4 2022/12/19 23:27
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語での引数の省略方法
-
複数桁10進数の*桁目だけを抽出...
-
Win32APIで作るコンボボックス...
-
#define _CRT_SECURE_NO_WARNIN...
-
ラップ関数とはどんなものですか?
-
「指定されたキャストは有効で...
-
未解決の外部シンボル _printf...
-
異なる文字列のマッチングを、D...
-
(int *)の意味
-
ColorをRGBで指定する方法
-
if と配列の組み合わせ
-
C言語での奇数の和
-
C言語 エラーの原因がわからな...
-
線形リストについてのプログラ...
-
数字列を3桁ごとにカンマで区切...
-
C言語で三目並べをするプログラ...
-
system関数がうまくいかない
-
C++でvectorにテキストファイル...
-
式は定数値が必要です」という...
-
read関数をノンブロッキングで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
#define _CRT_SECURE_NO_WARNIN...
-
複数桁10進数の*桁目だけを抽出...
-
ラップ関数とはどんなものですか?
-
C言語 エラーの原因がわからな...
-
(int *)の意味
-
【C++】関数ポインタの使い方
-
if と配列の組み合わせ
-
構造体の勉強中です 合計点の高...
-
windows-findstrの正規表現を使...
-
C言語で分からないところがあり...
-
int型の変数値をバイト列として...
-
PowerShellがうまくいかない
-
C言語での奇数の和
-
「{ } で囲むだけ」は正しい?
-
std::set<int> で、ある値が何...
-
実数の整数部,小数部の取得
-
エラー 添字が付けられた値が、...
-
int16_t の _t は何?
おすすめ情報