hdu2124 Repair the Wall

来源:互联网 发布:知柏地 编辑:程序博客网 时间:2024/05/08 02:20

没多大意思的水题,题意是说修补屋子的1*n矩形漏洞,给定一些木块用最少的木块修补好裂缝,可使用锯子裁掉多余部分,应该算是简单的贪心算法,从大到小排序后累加,大于就可以跳出循环。。。。

附代码如下:

# include <iostream>

using namespace std;

__int64 a[650];

int cmp(int a, int b)

{

    return a>b;

}

int main()

{

    __int64 Lack, n;

    while (scanf("%I64d %I64d", &Lack, &n) != EOF){

 

          for (int i = 0; i < n; i ++){

              scanf("%I64d", &a[i]);

          }

          sort(a, a+n, cmp);

          __int64 sum = 0;

          int check = 0;

          int counter = 0;

          for (int i = 0; i < n; i ++){

              if (sum >= Lack){

                 check = 1;

                 break;        

              }    

              else {

                   sum += a[i];

                   counter ++;

              }

          }

          if (sum >= Lack)check = 1;

          if (check)printf("%d/n", counter);

          else printf("impossible/n");

    }

    return 0;    

}