Опубликовал решение на PasteBin и тут, поскольку суда криво копируются символы таба, и потом нельзя нормально скопировать код. https://pastebin.com/kWSChLsh
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
struct State {
vector<pair<string, int>> candidates; // кандидаты в этом штате
string state; // название штата
int weight; // "вес" штата
State(string state = " ", int weight = 0) : state(state), weight(weight) {
Червь – программа, которая делает копии самой себя. Ее вред заключается в захламлении компьютера, из-за чего он начинает работать медленнее. Отличительной особенностью червя является то, что он не может стать частью другой безвредной программы.
Вирусы-маскировщики — Rootkit
Эти вирусы используются для сокрытия вредоносной активности. Они маскируют вредоносные программы, чтобы избежать их обнаружения антивирусными программами. Rootkit'ы также могут модифицировать операционную систему на компьютере и заменять основные ее функции, чтобы скрыть свое собственное присутствие и действия, которые предпринимает злоумышленник на зараженном компьютере.
Вирусы – шпионы — Spyware
Шпионы собирают информацию о действиях и поведении пользователя. В основном их интересует информация — адреса, пароли, данные кредитных карт).
Зомби — Zombie
Зомби позволяют злоумышленнику управлять компьютером пользователя. Компьютеры – зомби могут быть объединены в сеть —бот-нет) и использоваться для массовой атаки на сайты или рассылки спама. Пользователь может даже не догадываться, что его компьютер зомбирован и используется злоумышленником.
Рекламные вирусы — Adware
Программы-рекламы, без ведома пользователей встраиваются в различное программное обеспечение с целью демонстрации рекламных объявлений. Как правило, программы-рекламы встроены в программное обеспечение, распространяющееся бесплатно. Реклама располагается в рабочем интерфейсе. Зачастую данные программы также собирают и переправляют своему разработчику персональную информацию о пользователе.
Вирусы – блокировщики — WinlockТакие программы блокирует пользователю доступ к операционной системе. При загрузке компьютера появляется окно, в котором пользователя обвиняют в скачивании нелицензионного контента или нарушении авторских прав. И под угрозой полного удаления всех данных с компьютера требуют отослать смс на номер телефона или пополнить его счет. Естественно, после перевода денег на счет злоумышленника, баннер никуда не пропадает.
Троянские вирусы — Trojan
Троянская программа является самым опасным типом вирусов, так как она маскируется в других безвредных программах. И до того момента как пользователь не запустит эту самую безвредную программу, троян не несет никакой опасности и обнаружить его нелегко. Троянская программа может нанести различный ущерб для компьютера. В основном трояны используются для кражи, изменения или удаления личных данных пользователя. Отличительной особенностью вируса-трояна является то, что он не может самостоятельно размножаться.
Опубликовал решение на PasteBin и тут, поскольку суда криво копируются символы таба, и потом нельзя нормально скопировать код. https://pastebin.com/kWSChLsh
#include <algorithm>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
struct State {
vector<pair<string, int>> candidates; // кандидаты в этом штате
string state; // название штата
int weight; // "вес" штата
State(string state = " ", int weight = 0) : state(state), weight(weight) {
}
void vote(string candidate) { // принимаем голос избирателя
if (candidates.size() == 0) {
candidates.push_back({ candidate, 1 });
return;
}
for (int i = 0; i < candidates.size(); ++i) {
if (candidates[i].first == candidate) {
++candidates[i].second;
break;
}
else if (i == candidates.size() - 1) {
candidates.push_back({ candidate, 0 });
}
}
}
string getResultOfElections() {
if (candidates.size() == 1) {
return candidates[0].first;
}
sort(candidates.begin(), candidates.end(), // сортировка по голосам
[](pair<string, int>& a, pair<string, int>& b) {
return (a.second > b.second);
});
int last = -1;
for (int i = 1; i < candidates.size(); ++i) { // убираем проигравших
if (candidates[i].second != candidates[0].second) {
last = i;
break;
}
}
if (last != -1)
candidates.erase(candidates.begin() + last);
sort(candidates.begin(), candidates.end(), // лексографическая сортировка
[](pair<string, int>& a, pair<string, int>& b) {
return strcmp(a.first.c_str(), b.first.c_str()) < 0;
});
return candidates[0].first; // победитель
}
};
int main() {
setlocale(LC_ALL, "Russian");
cout << "Введите количество штатов: ";
vector<State> states;
int nOfStates = 0;
cin >> nOfStates;
cin.ignore();
cout << "Введите данные о состоянии штатов в формате Название_штата Значимость_Штата: ";
for (int i = 1; i <= nOfStates; ++i) {
string input, buffer, name, weight;
getline(cin, input);
name = input.substr(0, input.find(' '));
weight = input.substr(input.find(' '));
states.push_back(State(name, stoi(weight)));
}
cout << "Количество голосов: ";
int nOfVotes = 0;
cin >> nOfVotes;
cin.ignore();
cout << "Данные о голосах в формате Штат Кандидат: ";
for (int i = 0; i < nOfVotes; ++i) {
string input, state, candidate;
getline(cin, input);
state = input.substr(0, input.find(' '));
candidate = input.substr(input.find(' ') + 1);
for (int j = 0; j < nOfStates; ++j) {
if (states[j].state == state) {
states[j].vote(candidate);
}
}
}
vector<pair<string, int>> winners;
for (int i = 0; i < states.size(); ++i) {
string result = states[i].getResultOfElections();
if (winners.size() == 0) {
winners.push_back({ result, states[i].weight });
continue;
}
for (int j = 0; j < winners.size(); ++j) {
if (winners[j].first == result) {
winners[j].second += states[i].weight;
break;
}
else if (j == winners.size() - 1) {
winners.push_back({ result, 0 });
}
}
}
cout << endl;
for (int i = 0; i < winners.size(); ++i) {
cout << winners[i].first << " " << winners[i].second << endl;
}
}
Черви, Вирусы-маскировщики, Вирусы – шпионы, Зомби, Рекламные вирусы, Вирусы – блокировщики, Троянские вирусы
Объяснение:
Черви — Worm
Червь – программа, которая делает копии самой себя. Ее вред заключается в захламлении компьютера, из-за чего он начинает работать медленнее. Отличительной особенностью червя является то, что он не может стать частью другой безвредной программы.
Вирусы-маскировщики — Rootkit
Эти вирусы используются для сокрытия вредоносной активности. Они маскируют вредоносные программы, чтобы избежать их обнаружения антивирусными программами. Rootkit'ы также могут модифицировать операционную систему на компьютере и заменять основные ее функции, чтобы скрыть свое собственное присутствие и действия, которые предпринимает злоумышленник на зараженном компьютере.
Вирусы – шпионы — Spyware
Шпионы собирают информацию о действиях и поведении пользователя. В основном их интересует информация — адреса, пароли, данные кредитных карт).
Зомби — Zombie
Зомби позволяют злоумышленнику управлять компьютером пользователя. Компьютеры – зомби могут быть объединены в сеть —бот-нет) и использоваться для массовой атаки на сайты или рассылки спама. Пользователь может даже не догадываться, что его компьютер зомбирован и используется злоумышленником.
Рекламные вирусы — Adware
Программы-рекламы, без ведома пользователей встраиваются в различное программное обеспечение с целью демонстрации рекламных объявлений. Как правило, программы-рекламы встроены в программное обеспечение, распространяющееся бесплатно. Реклама располагается в рабочем интерфейсе. Зачастую данные программы также собирают и переправляют своему разработчику персональную информацию о пользователе.
Вирусы – блокировщики — WinlockТакие программы блокирует пользователю доступ к операционной системе. При загрузке компьютера появляется окно, в котором пользователя обвиняют в скачивании нелицензионного контента или нарушении авторских прав. И под угрозой полного удаления всех данных с компьютера требуют отослать смс на номер телефона или пополнить его счет. Естественно, после перевода денег на счет злоумышленника, баннер никуда не пропадает.
Троянские вирусы — Trojan
Троянская программа является самым опасным типом вирусов, так как она маскируется в других безвредных программах. И до того момента как пользователь не запустит эту самую безвредную программу, троян не несет никакой опасности и обнаружить его нелегко. Троянская программа может нанести различный ущерб для компьютера. В основном трояны используются для кражи, изменения или удаления личных данных пользователя. Отличительной особенностью вируса-трояна является то, что он не может самостоятельно размножаться.