Informatică, întrebare adresată de cosminmajor23, 9 ani în urmă

 

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 oraganizarea 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.


 

Exemplu:

Pentru datele de intrare:

n=5

m=6

D

2

D

3

N

3

D

3

D

5

N

2

Se va afişa:

a)

3 5

b)

3

c)

2


Utilizator anonim: Am ecranul cam scund :))
Ce clasă ești? (string-urile nu sunt prea prietenoase, zic :)) )
cosminmajor23: asa zic si eu, sunt clasa 9-a,dar primul an de studiu, problema este de clasa 6-a pentru olimpiada pe judet
Utilizator anonim: 'nțeles! Eu, la a 10-a, ar trebui să mai lucrez (județeana și eu :)) )
Utilizator anonim: O să îți arăt o chestie care face să nu fie nevoie neapărat de string-uri :))
Utilizator anonim: (se lucrează cu fișiere -- dau exemplu)
cosminmajor23: stiu sa lucrez pe fisiere..de genu numeleproblemei.in si numeleproblemei.out , deci ajuta-ma :)
Utilizator anonim: Deja scriu la ea (am terminat punctul a, încerc să fiu economic la memorie :)) )
cosminmajor23: ok astept

Răspunsuri la întrebare

Răspuns de Utilizator anonim
4
#include <fstream>
using namespace std;
char o[20]; //inițializat cu 0 dacă e global; char ocupă 1 octet dar e tot un int
short c[20]; //short ocupă 2 octeți și e tot int
int main()
{
short i, m2, n, cmax=0;
char m1;
ifstream f("impresar.in");
ofstream g("impresar.out");
cin>>n>>i;
while(i>0)
{
cin>>m1>>m2;
if(m1=='D') o[m2]=1;
if(m1=='N') o[m2]=0;
if(m1=='D'||m1=='N') c[m2]++; //condiționarea are grijă ca la intrare invalidă să nu facă nimic
i--;
} //deja avem structura orașelor cu da/nu, dar și de câte ori s-a răzgândit fiecare.
for(i=0;i<n;i++) if(o[i]==1) g<<i<<' ';
g<<endl; //am terminat cu a)
for(i=0;i<n;i++) if(c[i]>cmax)cmax=c;
for(i=0;i<n;i++) if(c[i]==cmax)g<<i<<' ';
g<<endl; //am terminat cu b)
cmax=0; //refolosit pentru a număra
for(i=0;i<n;i++) if(c[i]==0)cmax++;
g<<cmax<<endl; //am terminat și cu c)
f.close(); g.close(); return 0; //curățenie pentru fișiere; return 0 e mai curat decât fără un return :))
}
Alte întrebări interesante