[AtCoder] M-SOLUTIONS プロコンオープン 2020 C – Marks

2020年12月14日

問題

方針

\( K \) 学期目の評点を \( f(K) \) とすると、

\[ f(K) = A_1 \times A_2 \times \cdots \times A_{K-1} \times A_K\]

となり、\( K + 1 \) 学期目を考えると、

\begin{eqnarray}
f(K+1) &=& A_2 \times A_3 \times \cdots \times A_{K} \times A_{K+1}\\
f(K+1) &=& \dfrac{1}{A_1} \times f(K) \times A_{K+1} \\
\dfrac{f(K+1)}{f(K)} &=& \dfrac{A_1}{A_{K+1}}
\end{eqnarray}

となるので、\( A_1 \) と \(A_K \) の値を比べれば良いことが分かります。したがって、\( i \) 学期目では、\( A_{1+i} \) と \( A_{K+i} \) を比べれば良いです。

コード

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
    int N, K;
    cin >> N >> K;
    ll A[N];
    for (int i = 0; i < N; i++) {
        cin >> A[i];
    }
    for (int i = K; i < N; i++) {
        if (A[i] <= A[i - K]) {
            cout << "No\n";
        } else {
            cout << "Yes\n";
        }
    }
    return 0;
}