Public feed #601376

Eduard Gamonal

public cpp v1 · immutable
Raw Edit
·published 2007-07-03 13:50 UTC
rendered paste body
#include <vector>#include <iostream>using namespace std;struct Info {    int min, max;};typedef vector<vector<int> > Matriu;int minim(int a, int b) {    if (a < b) return a;    return b;}vector<Info> info_capes(const Matriu& mat) {    int n = mat.size();    int m = mat[0].size();    int nc_max; //nombre de capes màxim    int a = minim(n,m);        if (a%2 == 0) nc_max = a/2;    else nc_max = a/2 + 1;        int capes = 0;    vector<Info> r(nc_max);    bool final = false;    while (not final) {        // mentre no tinguem el nombre màxim de capes, busquem min i max en cada capa.        // recorrem les dues files de la capa d'esquerra a dreta        // les columnes de la capa, de dalt a baix.        int min = mat[capes][capes];        int max = mat[capes][capes];                //        //files        //        for (int j = capes; j < m-capes; ++j) {            //fila superior            if (mat[capes][j] > max) max = mat[capes][j];            if (mat[capes][j] < min) min = mat[capes][j];                        //inferior            int l = n - 1 - capes;            if (mat[l][j] > max) max = mat[l][j];            if (mat[l][j] < min) min = mat[l][j];        }                //        //columnes        //        for (int k = capes; k < n-capes; ++k) {            //columna de l'esquerra            if (mat[k][capes] > max) max = mat[k][capes];            if (mat[k][capes] < min) min = mat[k][capes];                        //columna de la dreta            int l = n - 1 - k;            int f = m- 1 - capes;            if (mat[l][f] > max) max = mat[l][f];            if (mat[l][f] < min) min = mat[l][f];        }            r[capes].min = min;        r[capes].max = max;                ++capes;                final = capes == nc_max;    }    return r;}int main() {    int n = 1;    int f, c;    while (cin >> f >> c) {        Matriu mat(c, f);        for (int i = 0; i < f; ++i) {            for (int j = 0; j < c; ++j) {                cin >> mat[j][i];            }        }        vector<Info> v = info_capes(mat);        cout << "matriu " << n << ":";        for (int i = 0; i < v.size(); ++i) {            cout << " " << v[i].min << "," << v[i].max;        }        cout << endl;        ++n;    }}