中南大学2018年ACM暑期集训前期训练题集(入门题) J : A Simple Problem

毒瘤哇!为什么要用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\n",ans);
    }
}

  

posted @ 2018-05-30 15:36  断腿三郎  阅读(205)  评论(0)    收藏  举报