Решите задачу на C++
Однажды Вася попал на распродажу старых телевизоров. Всего на
распродаже n телевизоров. Цена телевизора номер i — a монет. Причем часть телевизоров имеет отрицательную цену — их хозяева готовы сами заплатить Васе за то, что он избавит их от ненужной техники. Вася может «купить» любые телевизоры, какие захочет. Но хоть он и очень сильный, Вася может унести не больше m телевизоров, а возвращаться на распродажу второй раз у него нет
желания. Помогите Васе: найдите наибольшую сумму денег, которую он сможет заработать.
Входные данные:
В первой строке через пробел записано два целых числа n и m (1 ≤ m ≤ n ≤ 100) — количество телевизоров на распродаже и количество телевизоров, которое может унести Вася. На следующей строке через пробел записано n целых чисел a ( -1000 ≤ a ≤ 1000) — цены телевизоров.
Выходные данные:
Выведите одно число — максимальную сумму денег, которую заработает Вася, если он может унести не больше m телевизоров.
Примеры:
Входные данные:
5 3
-6 0 35 -2 4
Выходные данные:
8
Входные данные:
4 2
7 0 0 -7
Выходные данные:
7
Answers & Comments
#include <iostream>
#include <vector>
#include <map>
#include <set>
#include <string>
#include <algorithm>
#include <math.h>
#define ll long long
#define x first
#define y second
#define pll pair<ll,ll>
#define pii pair<int,int>
using namespace std;
void solve() {
int n, m; cin >> n >> m;
vector<int> a(n);
for(int i = 0; i < n; i++){
cin >> a[i];
}
sort(a.begin(), a.end());
int sum = 0;
for(int i = 0; i < n; i++){
if(a[i] >= 0) break;
if(m == 0) break;
sum += abs(a[i]);
m--;
}
cout << sum << endl;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
//ll t; cin >> t; while(t--)
solve();
}