欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

贪心的一些题目

最编程 2024-03-04 07:04:34
...

题目1:分班

5478. 分班 - AcWing题库

解题

#include<iostream>
#include<algorithm>
using namespace std;
const int N=100010;
int n,k,l;
int a[N];
int main()
{
    scanf("%d%d%d",&n,&k,&l);
    int m=n*k;
    for(int i=1;i<=m;i++) scanf("%d",&a[i]);
    sort(a+1,a+1+m);
    long long res=0;
    if(a[n]>a[1]+l) 
    {
        printf("0");
        return 0;
    }
    else
    {
        int i=n;
        while(a[i+1]<=a[1]+l&&i<=m) i++;
        int right=m-i;
        for(int j=1;j<=n;j++)
        {
            int can=min(right,k-1);
            right-=can;
            int left=k-can;
            i-=left;
            res+=a[i+1];
        }
        printf("%lld",res);
    }
}