Rezolvare completă PbInfo #3326 Turneu1

Cerință

Impresarul unei formații de muzică trebuie să primească oferte de spectacole și eventual anulări de spectacole din diferite orașe. Orașele sunt codificate prin numerele 1 , 2 ,.., n (1 ≤ n ≤ 20) și fiecare oraș poate organiza cel mult un spectacol. Impresarul ține legătura cu organizatorii de spectacole din aceste orașe și actualizează în permanență datele obținute. Prin fax el primește m (m ≤ 100) mesaje, care pot fi de unul din cele două tipuri:
D
nr
sau
N
nr

Cu semnificațiile: pentru primul mesaj se dorește organizarea unui concert în orașul nr, iar pentru a-l doilea mesaj se dorește anularea spectacolului din orașul nr . Un mesaj este format din exact două linii.

Se cere:
a) Să se afișeze orașele în care va concerta formația de muzică (pe aceeași linie cu un spațiu între ele).
b) Să se afișeze orașul (sau orașele dacă sunt mai multe, pe aceeași linie cu un spațiu între ele) în care organizatorii sunt cei mai nedeciși (adică au anulat și propus organizarea de spectacol în orașul lor de cele mai multe ori).
c) Să se afișeze numărul de orașe care nu au trimis nici un mesaj impresarului.

Date de intrare

Programul citește de la tastatură numărul n m, cele m mesaje: un caracter care poate sa fie 'D' sau 'N' și un număr natural a.

Date de ieșire

Programul afișează pe prima linie orașele în care va concerta formația, pe următoarea linie orașele în care organizatorii sunt cei mai indeciși și pe ultima linie numărul de orașe care nu au trimis nici un mesaj impresarului.

Restricții și precizări

  • 1 ≤ n ≤ 20
  • 1 ≤ m ≤ 100

Exemplu

Intrare

5 6
D
2
D
3
N
3
D
3
D
5
N
2

Ieșire

3 5
3
2

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema Turneu1:

#include <iostream>

using namespace std;
int f[101],f1[101];
int main()
{
    int n,m,a;
    char c;
    cin>>n>>m;
    for(int i=1;i<=m;i++)
    {
        cin>>c>>a;
        f1[a]++;
        if(c=='D')
        {
            f[a]++;
        }
        else
            f[a]--;
    }
    int maxx=0,cnt1=0;
    for(int i=1;i<=n;i++)
    {
        if(f1[i]==0)
            cnt1++;
        if(f[i]>0)
            cout<<i<<" ";
        if(f1[i]>maxx)
        {
            maxx=f1[i];
        }
    }
    cout<<'\n';
    for(int i=1;i<=n;i++)
    {
        if(f1[i]==maxx)
            cout<<i<<" ";
    }
    cout<<'\n'<<cnt1;
    return 0;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #3326 Turneu1

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #3326 Turneu1 de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!