Codeforces Round #334 (Div. 2) B. More Cowbell

来源:互联网 发布:淘宝有意思的店铺 编辑:程序博客网 时间:2024/05/17 09:16

题目链接:http://codeforces.com/contest/604/problem/B

Description

Kevin Sun wants to move his precious collection of n cowbells from Naperthrill to Exeter, where there is actually grass instead of corn. Before moving, he must pack his cowbells intok boxes of a fixed size. In order to keep his collection safe during transportation, he won't place more thantwo cowbells into a single box. Since Kevin wishes to minimize expenses, he is curious about the smallest size box he can use to pack his entire collection.

Kevin is a meticulous cowbell collector and knows that the size of his i-th (1 ≤ i ≤ n) cowbell is an integersi. In fact, he keeps his cowbells sorted by size, sosi - 1 ≤ si for anyi > 1. Also an expert packer, Kevin can fit one or two cowbells into a box of sizes if and only if the sum of their sizes does not exceeds. Given this information, help Kevin determine the smallests for which it is possible to put all of his cowbells intok boxes of size s.

Input

The first line of the input contains two space-separated integers n and k (1 ≤ n ≤ 2·k ≤ 100 000), denoting the number of cowbells and the number of boxes, respectively.

The next line contains n space-separated integerss1, s2, ..., sn (1 ≤ s1 ≤ s2 ≤ ... ≤ sn ≤ 1 000 000), the sizes of Kevin's cowbells. It is guaranteed that the sizes si are given in non-decreasing order.

Output

Print a single integer, the smallest s for which it is possible for Kevin to put all of his cowbells intok boxes of size s.

Sample test(s)
Input
2 12 5
Output
7
Input
4 32 3 5 9
Output
9
Input
3 23 5 7
Output
8
Note

In the first sample, Kevin must pack his two cowbells into the same box.

In the second sample, Kevin can pack together the following sets of cowbells: {2, 3}, {5} and {9}.

In the third sample, the optimal solution is {3, 5} and{7}.

害羞二分+贪心

题意:n个物品放入k个盒子中,每个盒子最多放入两个物品,要求物品权值小于盒子的权值才能放入,求将物品全部放入盒子时盒子的最小权值是多少。

数据:(1 ≤ n ≤ 2·k ≤ 100 000)

解题方法:二分+贪心

#include<stdio.h>#include<algorithm>using namespace std;long long int s[100100],n,k;int check(int x){    long long int xx=1,yy=n,ans=0,i;    for(i=1;i<=n;i++)    if(x<s[i]) return 0;//单个物品超过x显然是不合理的    while(1)    {        if(xx>yy) break;        if(s[xx]+s[yy]>x)        {            yy--;ans++;        }//如果两个物品相加大于x,那么这个大物品单独放在一个盒子里        else        {            ans++; xx++;yy--;        }    }    if(ans<=k) return 1;    else return 0;}int main(){    long long int i,j;    while(scanf("%lld%lld",&n,&k)!=EOF)    {      for(i=1;i<=n;i++)      scanf("%lld",&s[i]);      long long int l=1,r=2*1000000,mid;      while(l<=r)      {          mid=(r+l)/2;          if(check(mid)) r=mid-1;          else l=mid+1;      }      printf("%lld\n",l);//注意输出的是l    }}




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 小牛u1钥匙丢了怎么办 非牛顿流体干了怎么办 刺激战场0信誉分怎么办 假如非牛顿干了怎么办? 退出id后照片了怎么办 小麦收割机麦糠有籽粒怎么办 在家带娃没钱花怎么办 看3d电影近视的怎么办 摩托车电瓶没电了怎么办 踏板摩托车电瓶没电了怎么办 摩托车离合油没了怎么办 论文数据计算错误该怎么办 脚被擦破皮了痛怎么办 脚撞到了很疼怎么办 腿不小心磕青了怎么办 木制椅子腿断了怎么办 实木椅子腿断了怎么办 铁质椅子腿断了怎么办 大套摩托车查车怎么办 摩托车本扣12分怎么办 蓝牙耳机上面的软套掉了怎么办 工作不想干了怎么办啊 浴室门玻璃坏了怎么办 电梯顶层安全安全距离不合格怎么办 制冰机有些孔不出水怎么办 制冰机排水孔堵住了怎么办 点我达装备抽查怎么办 空军常服大檐帽有一点变形怎么办 一般纳税人没有进项发票怎么办 汽车购买发票丢了怎么办 购买房子的发票丢了怎么办 购买的二手房发票丢失怎么办 购买空调时的发票丢失怎么办 发票购票本丢了怎么办 留学中介费贵了怎么办 车祸伤者不肯出院怎么办 增值税普通发票发票联丢失怎么办 纳税识别号错了怎么办 电子发票税号填写错误怎么办 发票抬头名称写错了怎么办 滴滴发票抬头写错了怎么办