質問編集履歴
4
コード変更
title
CHANGED
File without changes
|
body
CHANGED
File without changes
|
3
コード変更
title
CHANGED
File without changes
|
body
CHANGED
@@ -153,4 +153,32 @@
|
|
153
153
|
|
154
154
|
print(cou)
|
155
155
|
|
156
|
+
```
|
157
|
+
|
158
|
+
【コード完成】
|
159
|
+
```python
|
160
|
+
n,high = map(int,input().split())
|
161
|
+
li = list(map(int,input().split()))
|
162
|
+
max_li = max(li)
|
163
|
+
li = [i for i in li if i + max_li >= high] # 一番高い雪を足しても、高さが満たさない雪だまは削除
|
164
|
+
li = sorted(li)
|
165
|
+
cou = 0
|
166
|
+
ind_max = len(li)-1 # 5
|
167
|
+
ind_min = 0
|
168
|
+
|
169
|
+
while li:
|
170
|
+
obj = 0
|
171
|
+
value = high - li[ind_max] #value値以上の最小を見つける
|
172
|
+
for i in range(ind_min,ind_max):
|
173
|
+
if li[i] >= value : #見つかった。
|
174
|
+
obj = li[i]
|
175
|
+
break
|
176
|
+
if obj == 0: #見つからなかった。
|
177
|
+
break
|
178
|
+
else: #見つかった
|
179
|
+
cou +=1
|
180
|
+
ind_max -=1
|
181
|
+
ind_min = i +1
|
182
|
+
|
183
|
+
print(cou)
|
156
184
|
```
|
2
コード変更
title
CHANGED
File without changes
|
body
CHANGED
@@ -123,4 +123,34 @@
|
|
123
123
|
del li[-1]
|
124
124
|
del li[:line+1]
|
125
125
|
print(cou)
|
126
|
+
```
|
127
|
+
|
128
|
+
【再追記】
|
129
|
+
ご教授いただいた点を考慮。
|
130
|
+
コード再作成。
|
131
|
+
```python
|
132
|
+
high = 8
|
133
|
+
li = [4,6,5,1,5,3]
|
134
|
+
li = [i for i in li if i + max(li) >= high] # 一番高い数値を足しても、規定値を満たさない値は、事前に削除
|
135
|
+
li = sorted(li)
|
136
|
+
cou = 0
|
137
|
+
ind_max = len(li)-1
|
138
|
+
ind_min = 0
|
139
|
+
|
140
|
+
while li:
|
141
|
+
obj = 0
|
142
|
+
value = high - li[ind_max] #value値以上の最小を見つける
|
143
|
+
for i in range(ind_min,ind_max):
|
144
|
+
if li[i] >= value : #見つかった。
|
145
|
+
obj = li[i]
|
146
|
+
break
|
147
|
+
if obj == 0: #見つからなかった。
|
148
|
+
break
|
149
|
+
else: #見つかった
|
150
|
+
cou +=1
|
151
|
+
ind_max -=1
|
152
|
+
ind_min = i +1 #リストの値を削除するのではなく、移動
|
153
|
+
|
154
|
+
print(cou)
|
155
|
+
|
126
156
|
```
|
1
ご解答頂いた内容を反映
title
CHANGED
File without changes
|
body
CHANGED
@@ -95,4 +95,32 @@
|
|
95
95
|
|
96
96
|
Pythonを使う前提で、上記のゴールを達成するできるだけ速いコードの書き方を提案してもらえないでしょうか。
|
97
97
|
|
98
|
-
どうぞよろしくお願いします。
|
98
|
+
どうぞよろしくお願いします。
|
99
|
+
|
100
|
+
|
101
|
+
【追記】
|
102
|
+
ご解答頂いた内容でコード作成しました。
|
103
|
+
速度は少し改善できました。ありがとうございます。
|
104
|
+
しかし、TLEはおきてしまっています。
|
105
|
+
```python
|
106
|
+
high = 8
|
107
|
+
li = [4,6,5,1,5,3]
|
108
|
+
li = [i for i in li if i + max(li) >= high] # 一番高い数値を足しても、規定値を満たさない値は、事前に削除
|
109
|
+
li = sorted(li)
|
110
|
+
cou = 0
|
111
|
+
|
112
|
+
while li:
|
113
|
+
obj = 0
|
114
|
+
value = high - li[-1] #value値以上の最小を見つける
|
115
|
+
for line,i in enumerate(li):
|
116
|
+
if i >= value and line+1 < len(li): #後半の条件は、末尾でないということ
|
117
|
+
obj = li[line] #見つかった。
|
118
|
+
break
|
119
|
+
if obj == 0: #見つからなかった。
|
120
|
+
break
|
121
|
+
else:
|
122
|
+
cou +=1
|
123
|
+
del li[-1]
|
124
|
+
del li[:line+1]
|
125
|
+
print(cou)
|
126
|
+
```
|