Я создаю программу, в которой вы вводите количество грибников, они участвуют в конкурсе на сбор мусора, они могут найти shroomA (5 баллов), shroomB (3 балла) и shroomC (15 баллов),Мне нужно найти победителя конкурса и напечатать его / ее имя, но если два или более участника набрали одинаковое количество очков, они дисквалифицируются, то есть мне нужно найти самый высокий неповторяющийся результат.
#include <iostream>
#include <vector>
#include <string>
using namespace std;
class ShroomPicker {
private:
string name;
long long int shroomA, shroomB, shroomC;
public:
void Input() {
char Name[100];
long long int shrooma, shroomb, shroomc;
cin >> Name >> shrooma >> shroomb >> shroomc;
name = Name;
shroomA = shrooma; shroomB = shroomb; shroomC = shroomc;
}
long long int calcPoints() {
return shroomA * 5 + shroomB * 3 + shroomC * 15;
}
string winnersName() {
return name;
}
};
int main() {
int n;
cin >> n;
vector<ShroomPicker> shr;
for (int i = 0; i < n; i++) {
ShroomPicker s;
s.Input();
shr.push_back(s);
}
long long int hiscore = 0;
int num = 0;
for (int i = 0; i < n; i++) {
long long int temp = 0;
temp = shr[i].calcPoints();
if (temp > hiscore) {
hiscore = temp;
num = i;
}
}
cout << shr[num].winnersName();
}
Я создал эту программу, которая находит самый высокий балл, даже если повторяется более одного раза, может кто-нибудь подсказать, как мне найти самый высокий неповторяющийся балл?
edit:
for (int i = 0; i < n; i++) {
long long int temp = 0;
temp = shr[i].calcPoints();
if (scoreMap.find(temp) == scoreMap.end()) {
scoreMap[temp] = Info{ i, false };
}
else {
scoreMap[temp] = Info{ i, true };
}
}