美文网首页
C . Memory is Full

C . Memory is Full

作者: Big_Max | 来源:发表于2017-02-11 23:43 被阅读0次

Jamal is trying to install a new app on his smart phone, but he is getting an error message:

“Memory is full”.

He loves his already installed apps, so he wants to remove the minimum number of them to be

able to install the new app.

Assume that his phone memory is k MBs, the new app size is m MBs and that there are n

installed apps. You are given a list of n positive integers representing the sizes of the installed

apps.

Find the minimum number of apps that should be removed.

Input

The first line of input contains one integer T, the number of test cases(1≤T≤128).

Each test case begins with three integers:k,m,n(1≤m≤k≤32,768)and(1≤n≤100).The next

line contains n space-separated integers representing the sizes of the installed apps.

Output

For each test case, print the minimum number of apps Jamal has to remove to be able to install.

thenewapp.

input

2

7 7 5

1 2 1 1 1

14 13 5

1 2 2 1 2

output

5

4

题意:

一个人的手机内存不足,已知他的手机内存和手机里每个app所占的内存,问:如果要再下载一个app,最少要卸载几个app。这道题主要就是贪心,一直卸载当前占内存最大的app,直到空闲内存大于等于所需要下载的app的内存,统计一下卸载了几个app就好了。注意排序时不要越界。

代码:


#include <stdio.h>

#include <algorithm>

#include <string.h>

using namespace  std;

int  main()

{    

      int  a[105];   

      int  k, m, n, i, t, j, s;    

      scanf("%d", &t);    

      for (j = 0;j < t;j ++)

      {

            scanf("%d%d%d", &k, &m, &n);

            s = k;

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

            {

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

            s -= a[i];

            }

            sort(a, a+n);

            for (i = n-1;i >= 0;i --)

            {

            s += a[i];

            if (s >= m)

            break;

           }

           printf("%d\n", n-i);

           memset(a, 0, sizeof(a));

     }

     return  0;

}

相关文章

网友评论

      本文标题:C . Memory is Full

      本文链接:https://www.haomeiwen.com/subject/mhooittx.html