40分求助
查看原帖
40分求助
1216851
AnCangLan楼主2024/1/5 15:01

以下是代码:

#include <iostream>
using namespace std;

const int N = 2e6 + 1;

int main()
{
    ios::sync_with_stdio(false);
    long long n, m, a[N]{}, min = 0xffffff, p = 0;
    cin >> n >> m;
    for (int i = 0; i < n; i++)cin >> a[i];
    cout << 0 << endl;
    for (int i = 1; i < n; i++)
    {
        if (i - m <= 0)
        {
            min = (min >= a[i - 1] ? a[i - 1] : min);
            p = (min >= a[i - 1] ? i : p);
            cout << min << endl;
        }
        else if (p <= i - m)
        {
            min = 0xffffff;
            for (int j = i - m; j < i; j++)
            {
                min = (min >= a[j] ? a[j] : min);
                p = (min >= a[j] ? j : p);
            }
            cout << min << endl;
        }
        else
        {
            min = (min >= a[i] ? a[i] : min);
            p = (min >= a[i] ? i : p);
            cout << min << endl;
        }
    }

	return 0;
}

还有4个点WA,2个点TLE……(换scanf/printf也不行) 方法只是对模拟的优化,省去了部分重复查找最小值的过程

2024/1/5 15:01
加载中...