九十分第八点TLE求助
查看原帖
九十分第八点TLE求助
1438571
Galaxy__H3356楼主2024/12/11 20:53
#include<queue>
#include<iostream>
using namespace std;
int k,n;
struct node{
	int a;
	int p;
}cur[2000001];
int mix=1e6;
int mex;
int maxn;
int mux;
queue<int>que;
inline int read(){
    int s = 0, w = 1; char ch = getchar();
    while(ch < '0' || ch > '9'){ if(ch == '-') w = -1; ch = getchar();}
    while(ch >= '0' && ch <= '9') s = s * 10 + ch - '0', ch = getchar();
    return s * w;
}
inline void print(int x){
	if(x<0) putchar('-'),x=-x;
	if(x>9) print(x/10);
	putchar(char(x%10+'0'));	
}
int main(){
//	freopen("in.txt","r",stdin);
//	freopen("out.txt","w",stdout);
	cin>>n>>k;
	for(int i=1;i<=n;i++) cur[i].a=read(),cur[i].p=i;
	for(int i=1;i<=k;i++) {
		if(cur[i].a<mix) mix=cur[i].a,mex=i;
		que.push(cur[i].a);
	}
	cout<<mix<<"\n";
	for(int i=k+1;i<=n;i++){
		que.push(cur[i].a);
		que.pop();
		if(i-mex>=k){
			mux=que.front();
			for(int j=1;j<=k;j++){
				int temp=que.front();
				que.pop();
				que.push(temp);
				if(temp<=mux) mux=temp,maxn=j;
			}
			mix=mux;
			mex+=maxn;
		}
		else if(cur[i].a<=mix){
			mix=cur[i].a;
			mex=i;
		}
		print(mix);
		printf("\n");
	}
	return 0;
}
2024/12/11 20:53
加载中...