Цитата p1ka4y777:
сначала опишите, пожалуйста, алгоритм и тогда я попробую скинуть свои наработки. »
|
p1ka4y777, лично мне не понятна эта последовательность действий. Я рассчитывал что смогу помочь тебе
самостоятельно решить эту задачу, задавая наводящие вопросы. Делаю вывод, что наработок у тебя нет, и решать задачу ты не хочешь.
Возможны два разных подхода: (у тебя есть шанс реабилитироваться, если ты расскажешь, какой принцип заложен в каждый из них)
Код:

#include <iostream>
#include <iomanip>
#include <string>
#include <map>
using namespace std;
int main() {
typedef map<long, bool> by_area;
typedef map<string, by_area> figure_by_name;
figure_by_name database;
string name;
long size;
while(cin >> name >> size) {
database[name][size];
}
for(figure_by_name::iterator fig=database.begin(), efig=database.end(); fig!=efig; ) {
--efig;
cout << efig->first << ":\n";
for(by_area::iterator area=efig->second.begin(), earea=efig->second.end(); area!=earea; ++area) {
cout << " " << area->first << "\n";
}
}
}
Код:

#include <iostream>
#include <iomanip>
#include <string>
#include <list>
using namespace std;
typedef pair<string,long> data_type;
typedef list<data_type> figure_list;
inline bool figure_order(data_type const &a, data_type const &b) {
return a.first > b.first || (a.first == b.first && a.second < b.second);
}
int main() {
figure_list figures;
data_type sample;
while(cin >> sample.first >> sample.second) {
figures.push_back(sample);
}
figures.sort(figure_order);
for(figure_list::iterator fig=figures.begin(), efig=figures.end(); fig!=efig; ++fig) {
cout << fig->first << ": " << fig->second << "\n";
}
}