Задача:
Программист Денис c детства мечтал побывать в Антарктиде, но почему-то регулярных рейсов туда нет. Поэтому Денис все лето изучал Антарктиду с помощью соседнего кинотеатра. Теперь он знает, что в Антарктиде водится несколько видов пингвинов: Императорские пингвины (Emperor Penguins) — любители петь; Малые пингвины (Little Penguins) — любители потанцевать; Пингвины Макарони (Macaroni Penguins) — любители сёрфинга.
К сожалению, в мультфильмах не было сказано, какой вид пингвинов самый многочисленный. Денис решил выяснить это: он посмотрел эти мультфильмы еще раз, и каждый раз, когда видел пингвина, записывал в блокнот название его вида. Сейчас Денис дал вам блокнот с просьбой выяснить, какой вид пингвинов самый многочисленный.
Исходные данныеВ первой строке записано целое число n — количество записей в блокноте (1 ≤ n ≤ 1000). В каждой из следующих nстрок записано по одному виду пингвинов. Среди видов встречаются только «Emperor Penguin», «Little Penguin» и «Macaroni Penguin».
РезультатВыведите самый популярный вид пингвинов. Гарантируется, что такой вид только один.
Моё решение:
#include <string>
#include <iostream>
#include <map>
using namespace std;
int main()
{
int n;
scanf("%d\n",&n);
map<char,int> peng;
peng['E']=0;
peng['M']=0;
peng['L']=0;
string tmp="";
for(int i=0;i<n;i++) {
getline(cin,tmp);
if(tmp[0]=='E' || tmp[0]=='M' || tmp[0]=='L') peng[tmp[0]]++;
}
map<char,int>::reverse_iterator rit = peng.rbegin();
switch(rit->first) {
case 'E': cout<<"Emperor Penguin"<<endl;break;
case 'M': cout<<"Macaroni Penguin"<<endl;break;
case 'L': cout<<"Little Penguin"<<endl;
}
return 0;
}
Это решение выдает WA на втором тесте, в чем может быть ошибка?
Примечание:
UPD: Решил без map.
#include <string>
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int i_peng[3]={0};
char c_peng[3];
c_peng[0]='M';
c_peng[1]='L';
c_peng[2]='E';
string tmp="";
cin.ignore(100,'\n');
for(int i=0;i<n;i++) {
getline(cin,tmp);
if(tmp[0]=='M') i_peng[0]++;
if(tmp[0]=='L') i_peng[1]++;
if(tmp[0]=='E') i_peng[2]++;
}
int max=0;
if(i_peng[0]<i_peng[1]) max=1;
if(i_peng[max]<i_peng[2]) max=2;
switch(c_peng[max]) {
case 'E': cout<<"Emperor Penguin"<<endl;break;
case 'M': cout<<"Macaroni Penguin"<<endl;break;
case 'L': cout<<"Little Penguin"<<endl;
}
return 0;
}
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.