【玄关】求调
查看原帖
【玄关】求调
743014
_H17_楼主2024/8/4 13:09
#include<bits/stdc++.h>
#define int long long 
#define ALL(x) x.begin(),x.end()
using namespace std;
int n,m,nowv,lastk,lastv,lasts,sum,ans=-4e18;
map<int,int>mp,rmp,s;
vector<int>vec;
signed main(){
    cin>>n>>m;
    for(int i=1,t;i<=n;i++){
        cin>>t;
        vec.push_back(t);
        mp[t]++,mp[t+m]--;
    }
    sort(ALL(vec));
    for(auto[k,v]:mp){
        if(!lastk)
            goto g;
        if(sum==2)
            rmp[lastk]++,rmp[k]--;
        if(sum==1)
            rmp[lastk]--,rmp[k]++;
        g:sum+=v,lastk=k;
    }
    lastk=0;
    for(auto&[k,v]:rmp){
        if(rmp.count(lastk))
            v+=rmp[lastk];
        lastk=k;
    }
    lastk=lastv=0;
    for(auto[k,v]:rmp){
        s[k]=v+(k-lastk-1)*lastv;
        if(s.count(lastk))
            s[k]+=s[lastk];
        lastv=v,lastk=k;
    }
    for(auto t:vec)
        ans=max(ans,s[t+m]-rmp[t+m]-s[t]+rmp[t]);
    ans+=m,lastk=sum=0;
    ans=max(ans,0ll);
    for(auto[k,v]:mp){
        if(sum==1)
            ans+=k-lastk;
        sum+=v,lastk=k;
    }
    cout<<ans;
    return 0;
}

45pts WA,似乎是统计多了

但是找不到哪里错了

2024/8/4 13:09
加载中...