滑动窗口100最后一个点T了求调
查看原帖
滑动窗口100最后一个点T了求调
1111300
ayszYW楼主2024/7/16 15:12

rt

#include<bits/stdc++.h>
using namespace std;


int n,a[2100000],m,lans[2100000],lans2[2100000];

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>m;
	for(int i=1;i<=n;i++)cin>>a[i];
	
	
	int i=0,j=m-1;
	int ans=INT_MAX,ans2=-INT_MAX;
	
	for(int l=1;l<=m;l++)ans=min(ans,a[l]);
	for(int l=1;l<=m;l++)ans2=max(ans2,a[l]);
	while(j<n){
		//cout<<i<<" "<<j<<endl;
		j++;
		if(j-i==m){
			i++;
			if(a[i-1]==ans){
				ans=INT_MAX;
				for(int k=i;k<=j;k++)ans=min(ans,a[k]);
			}
			if(a[i-1]==ans2){
				ans2=-INT_MAX;
				for(int k=i;k<=j;k++)ans2=max(ans2,a[k]);
			}
		}
		if(a[j]<=ans)ans=a[j];
		lans[j]=ans;
		if(a[j]>=ans2)ans2=a[j];
		lans2[j]=ans2;
		
		
	}
	for(int i=m;i<=n;i++)cout<<lans[i]<<" ";
	cout<<'\n';
	for(int i=m;i<=n;i++)cout<<lans2[i]<<" ";
	
}
2024/7/16 15:12
加载中...