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
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;
}
#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
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă