zoukankan      html  css  js  c++  java
  • xmu1214: 购物

    1214: 购物

    Time Limit: 500 MS  Memory Limit: 64 MB
    Submit: 10  Solved: 5
    [Submit][Status][Web Board]

    Description

    为了组织班级聚会,wlnwyyfc来到新华都购买一种物品,这类物品的价值为P。他身上有N笔款项,每笔款项都有相应的价值。他希望使用这些款项至少要买M件这类物品,但是款项必须要单独使用,即不能合在一起去购买。问物品的价值P(必须为正整数)最大能为多少?

    Input

    第一行输入两个整数N(1<=N<=100,000),M(1<=M<=1,000,000,000)。
    接下来输入N个正整数ai(1<=ai<=1,000,000,000),表示N笔款项的价值。

    Output

    输出一个数,表示P的最大值。如果没有满足的值,输出-1。

    Sample Input

    3 4
    10 5 2

    Sample Output

    3

    代码:

     1 #include<stdio.h>
     2 #define MAX(x,y)(x>y?x:y)
     3 const int MAXN=100010;
     4 int v[MAXN];
     5 int N,M;
     6 int getm(int x){
     7     int t=0;
     8     for(int i=0;i<N;i++){
     9         t+=v[i]/x;
    10     }
    11     return t;
    12 }
    13 int erfen(int l,int r){
    14     int mid;
    15     while(r-l>1){
    16         mid=(l+r)>>1;
    17         if(getm(mid)>=M)l=mid;
    18         else r=mid;
    19     }
    20     if(getm(l)>=M)return l;
    21     else return -1;
    22 }
    23 int main(){
    24     while(~scanf("%d%d",&N,&M)){
    25         int max=0;
    26         for(int i=0;i<N;i++)scanf("%d",v+i),max=MAX(max,v[i]);
    27         printf("%d
    ",erfen(0,max));
    28     }
    29     return 0;
    30 }
  • 相关阅读:
    用户使用调查报告
    Beta总结
    Beta冲刺Day7
    Beta冲刺Day6
    Beta冲刺Day5
    Beta冲刺Day4
    Beta冲刺Day3
    Beta冲刺Day2
    Beta冲刺Day1
    Beta预备
  • 原文地址:https://www.cnblogs.com/handsomecui/p/4859647.html
Copyright © 2011-2022 走看看