Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <iomanip>
- #include <vector>
- #include <algorithm>
- #include "pt4exam.h"
- using namespace std;
- // Для ввода используйте поток cin
- // Для вывода результатов используйте поток cout,
- // выводите символ пробела между полученными результатами,
- // перед вещественными числами указывайте манипуляторы:
- // fixed, setprecision(2);
- struct TDeptor {
- int apartment;
- double dept;
- int entrance;
- int level;
- };
- typedef TDeptor* PDeptor;
- struct TEntranceData {
- int entrance;
- vector<PDeptor> deptors;
- };
- typedef TEntranceData* PEntranceData;
- bool CompareEntranceData(PEntranceData first, PEntranceData second) {
- int deptorsFirst = first->deptors.size();
- int deptorsSecond = second->deptors.size();
- if (deptorsFirst != deptorsSecond) {
- return deptorsFirst > deptorsSecond;
- }
- return first->entrance <= second->entrance;
- }
- void Solve()
- {
- Task("ExamExt38");
- int count;
- cin >> count;
- vector<PEntranceData> entrances;
- for (int i = 0; i < 4; i++) {
- PEntranceData data = new TEntranceData;
- data->entrance = i;
- entrances.push_back(data);
- }
- string surname;
- double dept;
- int apartment;
- for (int i = 0; i < count; i++) {
- cin >> surname;
- cin >> dept;
- cin >> apartment;
- int entrance = (apartment - 1) / 36;
- int level = (apartment - entrance * 36) / 4;
- PDeptor deptor = new TDeptor;
- deptor->apartment = apartment;
- deptor->dept = dept;
- deptor->entrance = entrance;
- deptor->level = level;
- PEntranceData entranceData = entrances[entrance];
- entranceData->deptors.push_back(deptor);
- }
- sort(entrances.begin(), entrances.end(), CompareEntranceData);
- for (auto iter = entrances.begin(); iter != entrances.end(); iter++) {
- PEntranceData data = *iter;
- int deptorsCount = data->deptors.size();
- if (deptorsCount == 0)
- continue;
- double totalDept = 0;
- for (auto iterDeptors = data->deptors.begin(); iterDeptors != data->deptors.end(); iterDeptors++) {
- PDeptor deptor = *iterDeptors;
- totalDept += deptor->dept;
- }
- double avgDept = totalDept / deptorsCount;
- cout << deptorsCount << " ";
- cout << data->entrance + 1 << " ";
- cout << fixed << setprecision(2) << avgDept << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement