Informatică, întrebare adresată de annbleeditout, 9 ani în urmă

Buna seara! As avea si eu o problema: Se dă o matrice cu n linii şi m coloane şi elemente numere naturale. Să se ordoneze liniile matricei crescător după suma elementelor. Programul citește de la tastatură numerele n şi m, iar apoi n*m numere naturale, separate prin spaţii, reprezentând elementele matricei, linie cu linie. Programul afișează pe ecran elementele matricei transformate, câte un linie a matricei pe o linie a ecranului, elementele de pe o linie fiind separate prin câte un spațiu.
Date de intrare
4 6
4 20 15 23 18 9
1 8 23 22 14 18
17 15 13 18 12 15
3 18 8 20 12 5

Date de ieșire
3 18 8 20 12 5
1 8 23 22 14 18
4 20 15 23 18 9
17 15 13 18 12 15

Răspunsuri la întrebare

Răspuns de AntiEaglesDavids
2
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int NMAX = 10000;

int v[NMAX][NMAX];
vector<pair<int, int>> sume;

int main()
{
    int n, m;

    cin >> n >> m;
    for(int i=1, s=0; i<=n; i++, s=0) {
        for(int j=1; j<=m; j++) {
            cin >> v[i][j];
            s += v[i][j];
        }
        sume.push_back(make_pair(s, i));
    }

    sort(sume.begin(), sume.end());

    for(auto x : sume) {
        for(int j=1; j<=m; j++)
            cout << v[x.second][j] << ' ';
        cout << '\n';
    }

    return 0;
}

Alte întrebări interesante