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;
}