您的位置:首页 > 理论基础 > 计算机网络

http://codeforces.com/contest/34

2015-10-28 13:13 525 查看
B. Sale

time limit per test
2 seconds

memory limit per test
256 megabytes

input
standard input

output
standard output

Once Bob got to a sale of old TV sets. There were n TV sets at that sale. TV set with index i costs ai bellars.
Some TV sets have a negative price — their owners are ready to pay Bob if he buys their useless apparatus. Bob can «buy» any TV sets he wants. Though he's very strong, Bob can carry at most m TV
sets, and he has no desire to go to the sale for the second time. Please, help Bob find out the maximum sum of money that he can earn.

Input

The first line contains two space-separated integers n and m (1 ≤ m ≤ n ≤ 100)
— amount of TV sets at the sale, and amount of TV sets that Bob can carry. The following line contains n space-separated integers ai( - 1000 ≤ ai ≤ 1000)
— prices of the TV sets.

Output

Output the only number — the maximum sum of money that Bob can earn, given that he can carry at most mTV sets.

Sample test(s)

input
5 3
-6 0 35 -2 4


output
8


input
4 2
7 0 0 -7


output
7


这里我们用了简单的冒泡排序,当我们计算我们能赚多少钱是一定要注意把大于零的数去掉,因为加上大于零的数我们是会赔钱的,所以一定要考虑全面

#include <stdio.h>

int main()
{
    int  m, arr[110],k, i, s=0, j, n;
    scanf("%d", &n);
    scanf("%d", &m);
        for(i=1; i<=n; i++)
        scanf("%d", &arr[i]);
        
        for(j =
2; j <= n; j++)
            for(i =
2; i <= n; i++)
        {
            if(arr[i]<arr[i-1])
            {
                k = arr[i-1];
                arr[i-1] = arr[i];
                arr[i] = k;
            }
        }
    for(i=1;i<=n;i++)
    printf("%d", arr[i]);
        for(i=1;i<=m;i++)
        {
            if(arr[i] <
0)
            s += arr[i];
        }
        printf("%d\n", -s);
    return
0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  解题报告