👤

Determinati suma maxima care se poate forma cu m numere distincte dintr-un vector ce contine n valori intregi.Daca vectorul contine mai putin de n valori distincte se va afisa mesajul "Imposibil"
Program in c++.


Răspuns :

#include <iostream>

using namespace std;

int main(){
    int n, k = 0, S = 0, m;
    bool ok = true;
    cin >> n >> m;
    int v[n];
    for(int i = 0; i < n; i++)
        cin >> v[i];
    for(int i = 0; i < n; i++)
        for(int j = i + 1; j < n; j++)
            if(v[i] < v[j])
                swap(v[i], v[j]);
    while(k < m) {
        for(int i = 0; i < n; i++){
            if(v[i] != v[i - 1] || i == 0){
                S += v[i];
                k++;
            }
            if(k == m) {
                ok = 1;
                break;
            }
        }
        if(k < m) {
            ok = 0;
            break;
        }
    }
    if(ok == 1)
        cout << S;
    else
        cout << "Imposibil";
    return 0;
}

Eu asa am facut, nu stiu daca merge pe toate cazurile, bafta :)