はじめに
おひさしぶりです。今回はA,Cの二完でした。
今回はC問題の解説を書きます。
C - Marks
考えたこと
最初はふつうに評点を計算していましたが、さすがに数が大きくなりすぎてTLEしました。
ですので少し頭を使います。
この問題で聞かれているのは各学期間の大小だけです。また、学期ごとの評点の計算方法は直近$K$回の積なので、i学期の成績は$a_{(i-k)}*a_{(i-k+1)},\cdots,a_{i-1}$と書けます($i\geq k$)。ここで、$i+1$学期の評点は$i$学期の評点を$a_{(i-k)}$で割って$a_i$を掛けた値です。つまり、各学期間の大小を比べるだけなら、全ての積を計算しなくても各学期の最初と最後の大小関係を比べればよいことになります
n, k = map(int,input().split())
a = list(map(int,input().split()))
f = 0
for _ in range(n-k):
if a[f] < a[f+k]:
print('Yes')
else:
print('No')
f += 1
まとめ
自分の力不足を感じました。もっと精進しなければ。ではまた、おやすみなさい。