[Homework] C++ Fundamentals - STL Associative Containers - Problem{7} - Miners
Здравейте,
Някой успя ли да премине този тест, тъй като на мен ми дава "Time limit" в Judge на последните 2 теста при долния код и нямам идея как да го направя по-бърз.
Единственото, за което се губи време евентуално би било използването на for цикъла. Затова премахнах един при проверка във вектора, дали resource-а вече е вкарван с функцията find и проверявам чрез map контейнера, но подобрението го няма. Опитах и с unordered_ и ordered map, но там разликата е никаква.
Някакъв друг контейнер ли трябва да се използва. Шах съм!
Code:
unordered_map <string, int> miners;
vector <string> inputOrder;
string resource;
int quantity;
while(1) {
cin >> resource;
if (resource == "stop")
break;
cin >> quantity;
// adding the resource -> quantity pair in the map or just updating the value of quantity
miners[resource] += quantity;
//cheking if this this resource appear for the first time
if (miners[resource] == quantity)
inputOrder.push_back(resource);
}
// printing the resource -> quantity pairs in the order of their first insertion
for (vector<string>::iterator i = inputOrder.begin(); i != inputOrder.end(); i++) {
cout << *i << " -> " << miners[*i] << endl;
WOW, не мога да повярвам, че даде такава разлика именно с такава проста промяна. Невероятно!
Благодаря и на двамата (thekoceto и MartinBG)! Никога не бих се насочил към това, ако не бяхте вие. Разликата в скороста е около 11 пъти.