刚才比赛T3 45pts奇怪WA求调
  • 板块学术版
  • 楼主_H17_
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/3 18:07
  • 上次更新2024/8/3 18:24:43
查看原帖
刚才比赛T3 45pts奇怪WA求调
743014
_H17_楼主2024/8/3 18:07
#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=-0x3f3f3f3f3f3f3f3fll;
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(sum==2)
            rmp[lastk]++,rmp[k]--;
        if(sum==1)
            rmp[lastk]--,rmp[k]++;
        sum+=v,lastk=k;
    }
    lastk=0;
    for(auto&[k,v]:rmp)
        v+=rmp[lastk],lastk=k;
    lastk=lastv=0;
    for(auto[k,v]:rmp)
        s[k]=v+s[lastk]+(k-lastk-1)*lastv,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;
}
2024/8/3 18:07
加载中...