社区讨论

90分是为什么啊orz WA了第九个点...

P4998信号站参与者 5已保存回复 9

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
9 条
当前快照
1 份
快照标识符
@mi7chzez
此快照首次捕获于
2025/11/20 19:25
4 个月前
此快照最后确认于
2025/11/20 19:25
4 个月前
查看原帖
CPP
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;

int n,k,m;
long long ans[1000002],f[1000002],a[1000002],b[1000002];

int main()
{
    m=0;
    for (int i=0;i<=1000002;i++)
        ans[i]=a[i]=b[i]=f[i]=0;
    scanf("%d%d",&n,&k);
    for (int i=1;i<=n;i++){
        int x;
        scanf("%d",&x);
        f[x]++;
        m=max(m,x);
    }
    for (int i=1;i<=m;i++){
        a[i]=a[i-1]+b[i-1];
        b[i]=b[i-1]+f[i];
        ans[i]+=a[i];
    }
    for (int i=1;i<=m;i++){
        a[i]=b[i]=0;
    }
    for (int i=m;i>=1;i--){
        a[i]=a[i+1]+b[i+1];
        b[i]=b[i+1]+f[i];
        ans[i]+=a[i];
    }

    sort(ans+1,ans+1+m);
    long long t=0;
    for (int i=1;i<=k;i++)
        t+=ans[i];
    printf("%lld",t);
    return 0;
}

回复

9 条回复,欢迎继续交流。

正在加载回复...