社区讨论

求助80 两个点re(滑动窗口)

学术版参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@lo7uugnx
此快照首次捕获于
2023/10/27 08:08
2 年前
此快照最后确认于
2023/10/27 08:08
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
long long n,k,ans;
long long p_mmin,p_mmax;
long long a[9000005];
queue<long long> q;
set<long long> s;
vector<long long> mmax;
vector<long long> mmin;
int main(){
	cin>>n>>k;
	
	for(long long i=1;i<=n;i++){
		cin>>a[i];
	}
	for(long long i=1;i<=k;i++){
		s.insert(a[i]);
		q.push(a[i]);
	}
	auto find=s.end();
	find--;
	mmax.push_back(*find);
	auto find1=s.begin();
	find--;
	mmin.push_back(*find1);
	
	for(long long i=k+1;i<=n;i++){
		//cout<<q.back()<<" -->"<<q.front()<<endl;
		
		long long last=q.front();
		q.pop();
		q.push(a[i]);
		
		auto tempfind =s.find(last);
		s.erase(tempfind);
		//cout<<s.size()<<endl;
		s.insert(a[i]);
		auto find=s.end();
	    find--;
	    mmax.push_back(*find);
	    auto find1=s.begin();
	    find--;
	    mmin.push_back(*find1);
	}
	
	for(long long i=0;i<mmin.size();i++){
		cout<<mmin[i]<<" ";
	}
	cout<<endl;
	for(long long i=0;i<mmax.size();i++){
		cout<<mmax[i]<<" ";
	}
	return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...