03. Roxettes - C++ Advanced
Здрвейте,
Изпитвам затруднение с примерният изпит от C++ Advanced - Judge Assignment 1. Най-интересно честно казано ми е задачата Roxettes.
До момента успях да стигна до 80/100 със следният код и тестовете които не минават са заради времетраенето на програмата.
#include <iostream>
#include <unordered_set>
#include <string>
int main()
{
char token = ' ';
std::unordered_set <std::string> dnaSet;
int counter = 0;
std::string temp;
while (token != '.') {
std::cin >> token;
temp += token;
counter++;
if (counter == 5) {
if (dnaSet.find(temp) != dnaSet.end()) dnaSet.erase(temp);
else dnaSet.insert(temp);
counter = 0;
temp = "";
}
}
std::cout << *dnaSet.begin();
}
Предполагам, че да използвам unordered_set не е най-оптимално, особено, когато имаме голям брой от елементи в сета, и това забавя програмата. Видях колеги, които са ползвали XOR, което им дава възможността да пазят само един елемент от входа, но не успях да разбера как става.
Ако някой има идея или може да ми обясни, ще съм повече от благодарен.
Ооо благодаря много, пооправих някои неща и сега изглежда доста по-добре.
Нямам излишни counter-и и нямам temp променливи :)