最后一个数据点TLE,求助
查看原帖
最后一个数据点TLE,求助
1214977
Suspicious_spy楼主2024/4/15 17:45
#include<iostream>
#include<deque>
#define swift ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;

deque<int> que_max;
deque<int> que_min;
int a[1000005], res_min[1000005], res_max[1000005];

void POP(deque<int> & que, int val){
	if(!que.empty() && val == que.front())
		que.pop_front();
}

void push_min(deque<int> & que, int val){
	while(!que.empty() && val < que.back())
		que.pop_back();
	que.push_back(val);
}

void push_max(deque<int> & que, int val){
	while(!que.empty() && val > que.back())
		que.pop_back();
	que.push_back(val);
}



int result(deque<int> que){
	return que.front();
}

int main(){
	swift
	int count_min = 1, count_max = 1;
	int n, k;
	cin>>n>>k;
	for(int i = 1;i <= n;++i){
		cin>>a[i];
		push_min(que_min, a[i]);
		push_max(que_max, a[i]);
		if(i > k){
			POP(que_min, a[i - k]);
			POP(que_max, a[i - k]);
		}
		if(i >= k){
			res_min[count_min++] = result(que_min);
			res_max[count_max++] = result(que_max);
		}
	}
	for(int i = 1;i < count_min;++i)
		cout<<res_min[i]<<' ';
	cout<<endl;
	for(int i = 1;i < count_max;++i)
		cout<<res_max[i]<<' ';
	cout<<endl;
	return 0;
}
2024/4/15 17:45
加载中...