Показать сообщение отдельно
Старый 15.08.2011, 21:52   #24
Йоха
Умный
 
Регистрация: 02.07.2010
Сообщений: 434
Сказал(а) спасибо: 27
Поблагодарили 73 раз(а) в 45 сообщениях
Йоха Скоро придёт к известности
По умолчанию

Вот 100% рабочий вариант -)
Первая часть где ввод данных и вычисление максимального бала - не изменилась. И кстати занимать памяти это дело будет всего 782 Кбайта при количестве элементов 100000.

И я никак не пойму твою идею насчет выкидывания каких-то данных в процессе ввода. Данные можно проанализировать после того как они все введены, иначе будет неполный анализ.

И совет небольшой - не занимайся пока никакой оптимизацией. Сперва просто напиши любой код, каким бы ужасным он не был, который просто справляется с поставленной задачей - это главное. Потом с опытом прийдут в голову более оптимальные решения.

Код:
#include <tchar.h>
#include <iostream>
#include <string>
#include <map>

struct SCHOOLINFO
{
	int school;
	int grade;
};

int _tmain(int argc, _TCHAR* argv[])
{
	std::map<int, int> schoolmap;
	std::string name;
	int count, maxgrade = 0;
	std::cout << "Enter number of students" << std::endl << "> ";
	std::cin >> count;
	SCHOOLINFO *info = new SCHOOLINFO[count];
	std::cout << "Enter fname lname school grade for students" << std::endl;
	for (int i = 0; i < count; i++)
	{
		std::cout << "#" << i + 1 << "> ";
		std::cin >> name >> name >> info[i].school >> info[i].grade;
		if (info[i].grade > maxgrade)
		{
			maxgrade = info[i].grade;
		}
	}
	int school, maxcount = 0;
	for (int i = 0; i < count; i++)
	{
		if (info[i].grade == maxgrade)
			if (schoolmap.count(info[i].school) == 0)
				schoolmap.insert(std::make_pair(info[i].school, 1));
			else
			{
				schoolmap[info[i].school]++;
				if (schoolmap[info[i].school] > maxcount)
				{
					maxcount = schoolmap[info[i].school];
					school = info[i].school;
				}
			}
	}
	std::cout << "winner school " << school << std::endl;
	delete[] info;
	return 0;
}

Последний раз редактировалось Йоха; 15.08.2011 в 22:00.
Йоха вне форума   Ответить с цитированием