F004A. Les capes de la ceba P88060


Statement
 

pdf   zip

html

[r] Donada una matriu, tots els elements que es troben a la primera fila, a la primera columna, a l’última fila i a l’última columna, formen la primera capa de la matriu. Igualment, els elements que es troben a la segona fila, a la segona columna, a la penúltima fila i a la penúltima columna (però que no es troben a la primera capa), formen la segona capa. El concepte de capa es generalitza de la mateixa manera per a tots els elements de la matriu.

Per exemple, per a una matriu de 8 files i 9 columnes, el diagrama següent mostra a quina capa es troba cada element de la matriu:

||

111111111
122222221
123333321
123444321
123444321
123333321
122222221
111111111

||

Feu un programa que, donades diferents matrius d’enters, calculi, per a cadascuna d’elles, els valors mínims i màxims de cadascuna de les seves capes. Per exemple, per a la matriu

||

1519292821519292
46311333246321313
1533222216123414
2317331223173221
1363562211362664
43985211439864
5396642176399614
9994551219994551

||

el mínim i màxim de la primera capa són 1 i 99, el mínim i màxim de la segona capa són 3 i 99, el mínim i màxim de la tercera capa són 2 i 62, i el mínim i màxim de la quarta capa són 1 i 23. Representem aquesta informació amb un vector de parells:

||

1,993,992,621,23

||

El programa principal ja se us dóna implementat (no el toqueu!). Utilitzant els tipus

struct Info { int min, max; }; typedef vector<vector<int> > Matriu;

heu d’implementar la funció

vector<Info> info_capes(const Matriu& mat);

que, donada una matriu rectangular |mat| (amb, com a mínim, una fila i una columna), retorna un vector amb tantes posicions com capes té la matriu, on la posició i del vector conté els valors mínim i màxim de la capa i+1 de |mat|.

Public test cases
  • Input

    8 9
    15  1 92 92 82 15  1 92 92 
    46 31 13  3 32 46 32 13 13 
    15  3 32  2 22 16 12 34 14 
    23 17 33  1  2 23 17 32 21 
    13 63 56  2 21 13 62 66  4 
    43  9  8 52 11 43  9  8 64 
    53 96  6 42 17 63 99  6 14 
    99 94  5 51 21 99 94  5 51 
    
    10 10
    1 1 1 1 1 1 1 1 1 1
    1 2 2 2 2 2 2 2 2 1
    1 2 3 3 3 3 3 3 2 1
    1 2 3 4 4 4 4 3 2 1
    1 2 3 4 5 5 4 3 2 1
    1 2 3 4 5 5 4 3 2 1
    1 2 3 4 4 4 4 3 2 1
    1 2 3 3 3 3 3 3 2 1
    1 2 2 2 2 2 2 2 2 1
    1 1 1 1 1 1 1 1 1 1
    
    5 4
     1  2  3  4
     5  6  7  8
     9  1 11 12
    13 14 15 16
    17 28 29 20
    
    3 5
    11 21 31 74 85  
    17 18 69 10 11 
    13 14 15 16 17 
    
    1 1
    -666
    
    3 1
    10000001
    -10000001
    0
    
    1 9
    6 6 6 8 8 8 9 9 9
    
    

    Output

    matriu 1: 1,99 3,99 2,62 1,23
    matriu 2: 1,1 2,2 3,3 4,4 5,5
    matriu 3: 1,29 1,15
    matriu 4: 11,85 10,69
    matriu 5: -666,-666
    matriu 6: -10000001,10000001
    matriu 7: 6,9
    
  • Information
    Author
    Professorat de P1
    Language
    Catalan
    Other languages
    English
    Official solutions
    C++
    User solutions
    C++