nlogn的multiset为什么TLE#9,求调玄关
查看原帖
nlogn的multiset为什么TLE#9,求调玄关
611878
sunqihuan楼主2024/12/8 16:32

rt,我看到同机房的同学过了的……各种卡常方法我也是都用上了,但#9还是TLE。

#include<bits/stdc++.h>
using namespace std;
static int n,m,a[1000005];
multiset<int> s,s2;
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<<3)+(s<<1)+ch-'0',ch=getchar();
   return s*w;
}
inline void write(int x){
    if(x<0) {
        putchar('-');
        x = -x;
    }
    if(x>9) write(x / 10);
    putchar(x % 10 + '0');
}
int main(){
	n=read();
	m=read();
	for(register int i=1;i<=n;i++){
		a[i]=read();
		if(i<=m)s.insert(a[i]);
		else {
			write(*s.begin());
			putchar(' ');
			multiset<int> :: iterator it=s.find(a[i-m]);
			s.erase(it);
			s.insert(a[i]);
		}
	}
	write(*s.begin());
	puts("");
	for(register int i=1;i<=n;i++){
		if(i<=m)s2.insert(a[i]);
		else {
			write(*(--s2.end()));
			putchar(' ');
			multiset<int> :: iterator it=s2.find(a[i-m]);
			s2.erase(it);
			s2.insert(a[i]);
		}
	}
	write(*(--s2.end()));
	return 0;
}

2024/12/8 16:32
加载中...