第6题书架【2017狮山镇小甲五年级】

题目描述

为了方便同学们查阅资料,程序设计兴趣小组的辅导老师打算将积攒了很多年的 n 本书放到上课教室的书 架上去。
教室的书架是一层一层叠起来的,每一层最多可以放 m 本书。每一层的高度由放在这层中最高的那本书决 定的,如果不放书,则认为这层的高度为 0。为了使每个同学能方便地拿到想要的书,书架的总高度应尽可能 低。请编程计算将这 n 本书放在书架上后书架的最小总高度,计算的过程中不考虑书的厚度与书架本身材料的厚度。

输入

输入共 n+1 行。 第 1 行 2 个整数 n 和 m (1≤m≤n≤100000) 。接下来 n 行,每行 1 个正整数,分别表示每本书的高度(每本书的高度不超过 100)。

输出

结果输出到文件中,输出共 1 行,表示将 n 本书放入书架后书架的最小总高度。

样例输入 Copy

3 2
20 10 30

样例输出 Copy

40

提示

【样例解释】 将高度是 30 和 20 的两本书放在一层,则这层的高度为 30,将高度是 10 的那本书放在另外一层,则这层 的高度为 10,则书架的总高度为 40,满足最小。

上程序

#include<iostream>

#include<fstream>

#include<algorithm>

   

using namespace std;

int e,m,a[100005],t;

bool cmp(int a,int b)

{

    return a>b;

}

int main()

{    int e,m;

     cin>>e>>m;

     for(int i=1;i<=e;i++)

         cin>>a[i];

    sort(a+1,a+e+1,cmp);

    for(int i=1;i<=e;i+=m)

        t+=a[i];

    cout<<t;

    return 0;

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值