回答編集履歴

2

指摘4の追加

2019/05/05 14:12

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -97,3 +97,9 @@
97
97
  ```
98
98
 
99
99
  と書きたいところ。
100
+
101
+
102
+
103
+ (4) 追記:ローカル変数に巨大な配列を定義している
104
+
105
+ ローカル変数arrayですが、これほど巨大な大きさの配列をローカル変数として定義することは通常「よくない」と思います。どこまでならゆるされるかをはっきり言えないのですが自分ならせいぜい1000要素程度(数KB程度)が限度だと思っています。またローカル変数のバイト数がある程度以上大きな関数は再帰呼び出しを避けるといった注意も必要になるでしょう。大きな配列がどうしても必要ならグローバル変数とするか、mallocなどでヒープから動的に確保すべきだと思います。グローバル変数/mallocのどちらにすべきかはケースバイケースだと思います。

1

追記

2019/05/05 14:12

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -45,6 +45,8 @@
45
45
  (2) 質問者さんのプログラムの効率
46
46
 
47
47
  質問者さんのアルゴリズムの計算量はO(N^3)だと思います。しかし問題の条件をよく考えればO(N)の計算量で結果が出ます。また配列arrayに入力データを全部覚える必要もありません。質問者さんのアルゴリズム(の方針)は正しい結果を出すこと自体はできるものの効率がよくないため例えばAtCoderのような「計算効率をも問う問題サイト」では正解とはみなされないと思います。
48
+
49
+ (追記: 上記の'^'はべき乗の意味です)
48
50
 
49
51
 
50
52