Brillantor d'una imatge T59731


Statement
 

pdf   zip

Una imatge en escala de grisos es representa com una matriu de ff files i cc columnes, on cada valor és un enter entre 0 (negre) i 255 (blanc). La brillantor mitjana d’una columna és la mitjana aritmètica dels valors de tots els píxels d’aquella columna.

Fes un programa que, donada una seqüència d’imatges, identifiqui per cada imatge quines columnes són més brillants, mostrant-les ordenades de major a menor brillantor mitjana.

El programa ha d’incloure una funció amb la capçalera següent:

double brillantor(const vector<vector<int>>& imatge, int col);

que donada la matriu i un índex de columna (0-indexed) retorni la brillantor mitjana d’aquella columna.

Exemple

Entrada

3 4
100 200  50 150
 80  90 110 100
200 255 180 210
2 3
10 20 30
40 50 60

Sortida

2 181.67
4 153.33
1 126.67
3 113.33

3 45.00
2 35.00
1 25.00

Explicació

Per a la primera imatge, les brillantors mitjanes de les quatre columnes són:

  • Columna 1: (100+80+200)/3=126,67(100 + 80 + 200) / 3 = 126{,}67

  • Columna 2: (200+90+255)/3=181,67(200 + 90 + 255) / 3 = 181{,}67

  • Columna 3: (50+110+180)/3=113,33(50 + 110 + 180) / 3 = 113{,}33

  • Columna 4: (150+100+210)/3=153,33(150 + 100 + 210) / 3 = 153{,}33

Ordenades de major a menor: columna 2, columna 4, columna 1, columna 3.

Per a la segona imatge, les brillantors mitjanes de les tres columnes són:

  • Columna 1: (10+40)/2=25,00(10 + 40) / 2 = 25{,}00

  • Columna 2: (20+50)/2=35,00(20 + 50) / 2 = 35{,}00

  • Columna 3: (30+60)/2=45,00(30 + 60) / 2 = 45{,}00

Ordenades de major a menor: columna 3, columna 2, columna 1.

Observació

Per imprimir un nombre real amb exactament dos decimals podeu usar cout << fixed << setprecision(2) << valor, on fixed i setprecision estan disponibles amb #include <iomanip>. Un cop activat, tots els reals posteriors s’imprimiran amb dos decimals.

Entrada

Una seqüència d’imatges. Per a cada imatge:

  • Dos enters ff i cc (f1f \geq 1, c1c \geq 1): el nombre de files i columnes de la imatge.

  • f×cf \times c enters entre 0 i 255, introduïts fila a fila.

Sortida

Per a cada imatge, els índexos de columna (1-indexed) i les seves brillantors mitjana amb dos decimals, ordenats de major a menor brillantor. En cas d’empat de brillantor, la columna amb l’índex menor apareix primer.

Les sortides de dues imatges consecutives se separen amb una línia en blanc.

Per obtenir més detalls sobre la sortida consulta els jocs de proves públics.

Public test cases
  • Input

    3 4
    100 200 50 150
    80 90 110 100
    200 255 180 210
    
    2 3
    10 20 30
    40 50 60
    

    Output

    2 181.67
    4 153.33
    1 126.67
    3 113.33
    
    3 45.00
    2 35.00
    1 25.00
    
  • Input

    2 4
    100 150 50 150
    200 150 250 100
    
    3 3
    80 80 80
    80 80 80
    80 80 80
    
    1 5
    255 100 255 100 255
    
    4 2
    10 200
    20 200
    30 200
    40 200
    
    3 4
    0 128 0 128
    128 0 128 0
    64 64 64 64
    

    Output

    1 150.00
    2 150.00
    3 150.00
    4 125.00
    
    1 80.00
    2 80.00
    3 80.00
    
    1 255.00
    3 255.00
    5 255.00
    2 100.00
    4 100.00
    
    2 200.00
    1 25.00
    
    1 64.00
    2 64.00
    3 64.00
    4 64.00
    
  • Information
    Author
    Bernardino Casas
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++