初学者,为啥一个都过不了
查看原帖
初学者,为啥一个都过不了
1141947
jqdlk楼主2024/2/27 14:43
#include <bits/stdc++.h>
using namespace std;

const int maxn = 1e5 + 10;
const int INF = 1e7;
int LIS[maxn] = { 0 };

int main() {
    int N, K;
    cin >> N >> K;
    vector<int> a(N + 2);
    a[0] = INF;
    a[N + 1] = 0;
    for (int i = 1; i <= N; i++)
        cin >> a[i];

    LIS[N] = K;
    int r = 0, l = 0;

    for (int i = N; i >= K; i--)
    {
        r = 0;
        l = 0;
        if (i - K >= 1) {
            l = 1;
            for (int j = i - K; j >= 1; j--) {
                if (a[j] >= a[j - 1])
                    l++;
                else
                    break;
            }
        }

        if (i + 1 <= N) {
            r = 1;
            for (int k = i + 1; k <= N; k++) {
                if (a[k] <= a[k + 1])
                    r++;
                else
                    break; 
            }
        }
        if (a[i - K] <= a[i + 1])
            LIS[i] = max(LIS[i + 1], K + l + r);
        else
            LIS[i] = max(LIS[i + 1], K + max(l, r));
    }
    cout << LIS[K];

    return 0;
}

2024/2/27 14:43
加载中...