毒瘤哇!为什么要用long long 啊!!!这个题没有加法操作啊,为什么会爆int啊!!!!
思路:
http://www.cnblogs.com/buerdepepeqi/p/9048130.html
来源于此。
尺取法
说一下,虽然stl在某些情况下,跑的比较慢,但是它的那些函数名,在某些意义上起到了注释的作用,而且写起来也确实方便一些。
#include<cstdio> #include<algorithm> #include<set> #define ll long long using namespace std; ll a[1000086]; int main() { ll n,m; while(scanf("%lld%lld",&n,&m)!=EOF){ for(int i=0;i<n;i++){ scanf("%lld",&a[i]); } ll left=0,right=0; ll maxx,minn,ans=0; multiset<ll>ss; ss.insert(a[0]); while(right!=n){ maxx=*(--ss.end()); minn=*ss.begin(); if(maxx-minn<=m){ ans=max(ans,right-left+1); ss.insert(a[++right]); } else{ ss.erase(ss.find(a[left++])); } } printf("%d ",ans); } }