Coronavirus P80757


Statement
 

pdf   zip

thehtml

Volem simular, amb un model ridículament senzill, la contaminació i els contagis que pot produir a un aula de la facultat l’esternut d’un estudiant possiblement infectat de covid-19.

Al nostre model el mapa de cada aula es representa per una matriu de n files i m columnes, on cada posició (i,j) representa una cadira (0≤ i < n, 0≤ j < m). La posició (i,j) de la matriu es marca amb una lletra e per tal de indicar que a la cadira (i,j) s’asseu un estudiant i amb un punt si la cadira està buida.

Assumirem que un dels estudiants de l’aula, assegut a la posició (i,j), esternuda. L’esternut fa que el virus es propagui en direcció horitzontal (cap a columnes posteriors a la seva) fins a una distància màxima h≥1, proporcional a la força de l’esternut . A més, l’esternut produeix aerosols que s’expandeixen i contaminen de virus tota l’àrea d’un triangle isòsceles amb àpex a (i,j) i alçada h, tal i com es mostra a la figura –a on l’esternut es produeix a la cadira vermella, amb distància màxima h=6.

Feu un programa que, donats el mapa d’ocupació d’una aula concreta, determini quina és l’àrea que queda contaminada i quants estudiants es contagiaran (en el pitjor cas) en simular diferents possibles posicions de l’esternut. El vostre programa ha d’incloure obligatòriament la següent funció:

    int contagia(Aula& M, int i, int j, int h);

que, donat el mapa de l’aula M, la posició (i,j) de l’esternut, i la distància màxima d’expansió h, retorna el nombre d’estudiants que es contagiaran i marca a M l’àrea que ha quedat contaminada amb *. Els estudiants que es trobin dins de l’àrea contaminada canviaran la e per una I.

El tipus Aula es defineix de la següent forma:

    using Aula = vector<string>;

Entrada

L’entrada consisteix d’un parell d’enters n i m, 0 < n,m≤ 100, seguits d’un mapa d’aula de n× m de caràcters en què un . indica un seient lliure i una e indica un seient ocupat per un estudiant. A continuació segueix una seqüencia de tuples de 3 elements. Cada tupla conté un parell d’enters i,j que indiquen la posició de l’esternut dins de l’aula (0≤ i < n i 0≤ j < m), i un enter h≥ 1 que determina la distància màxima d’expansió de l’esternut.

Sortida

Sobre el mapa inicial de l’aula, cal determinar, per a cada 3-tupla de la seqüència, quina és l’àrea que quedaria contaminada de virus i quants estudiants es podrien arribar a contagiar, seguint el format dels exemples. Després de la simulació cada 3-tupla de la seqüència, hi ha una línia de separació formada per vint guions -.

Observació

Les simulacions son independents entre elles, per tant heu d’utilitzar el mapa d’entrada de l’aula abans de realitzar cada simulació.

Public test cases
  • Input

    6 6
    ...e..
    .ee.ee
    e..ee.
    ee....
    ......
    eeeeee
    
    2 0 4 
    5 5 4 
    5 0 4 
    

    Output

    Nous possibles infectats: 6
    ..*I..
    .II*ee
    I**Ie.
    eI**..
    ..**..
    eeeIee
    --------------------
    Nous possibles infectats: 0
    ...e..
    .ee.ee
    e..ee.
    ee....
    ......
    eeeeeI
    --------------------
    Nous possibles infectats: 4
    ...e..
    .ee.ee
    e..Ie.
    ee**..
    .***..
    IIIIee
    --------------------
    
  • Information
    Author
    Maria Blesa i Amalia Duch
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++