感谢各位大佬的帮助!下面就是我的代码 我已经在尽力优化一些条件了 可还是Time Limit Exceeded
#include<iostream>
#include <algorithm>
using namespace std;
const int N=1000010;
int a[N];
int q[N];
int main()
{
int n,k;
cin>>n>>k;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
for(int i=0;i<n-k+1;i++)
{
if(i==0){ //第一次的滑动
for(int j=i;j<i+k;j++)
{
q[j]=a[j];
}
sort(q+i,q+i+k);
cout<<q[i]<<" ";
}
else
{
if(a[i+k-1]>=q[i-1]&&q[i-1]!=a[i-1])
{
q[i]=q[i-1];
cout<<q[i-1]<<" ";
}
else
{
for(int j=i;j<i+k;j++)
{
q[j]=a[j];
}
sort(q+i,q+i+k);
cout<<q[i]<<" ";
}
}
}
cout<<endl;
for(int i=0;i<n-k+1;i++)
{
if(i==0){
for(int j=i;j<i+k;j++)
{
q[j]=a[j];
}
sort(q+i,q+i+k);
cout<<q[i+k-1]<<" ";
}
else
{
if(a[i+k-1]<=q[i-1+k-1]&&q[i-1+k-1]!=a[i-1])
{
q[i+k-1]=q[i-1+k-1];
cout<<q[i-1+k-1]<<" ";
}
else
{
for(int j=i;j<i+k;j++)
{
q[j]=a[j];
}
sort(q+i,q+i+k);
cout<<q[i+k-1]<<" ";
}
}
}
return 0;
}