こちらの問題の解答コードが以下になるのですがwhile文の中のwhile文の中のwhile文の条件式でi < N &&
を追記すればAC(Accepted)となるのですが、これがないとRE(Runtime Error)となってしまうのですが原因がわかりません。該当のwhile文を囲っているwhile文の条件がi < N
なので不要だと思ったのですが。。REの原因としてオーバーフロー、return 0;
忘れがあるそうなのですが今回はそれに該当しないかと思います。原因がわかる方、よろしくお願い致します。
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int N; cin >> N; vector<int> h(N); for (int i = 0; i < N; ++i) cin >> h[i]; // 高さが全部 0 になるまでやる int res = 0; while (true) { // 最高高さが 0 だったらおしまい if (*max_element(h.begin(), h.end()) == 0) break; // 区間分割する int i = 0; while (i < N) { if (h[i] == 0) ++i; // 0 なら何もせずに次に進む else { ++res; // 区間の始まり while (/*i < N && */h[i] > 0) { --h[i]; // ついでに引いとく ++i; // 区間の終わりまで一気に } } } } cout << res << endl; return 0; }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/25 10:07