Răspuns :
#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 :))
}
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 :))
}