Advertisement
Spocoman

02. Fishes(57/100)

Feb 17th, 2024 (edited)
741
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.91 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <map>
  4. #include <vector>
  5. #include <algorithm>
  6.  
  7. using namespace std;
  8.  
  9. bool is_find(vector<string>& v, string el) {
  10.     return find(v.begin(), v.end(), el) != v.end();
  11. }
  12.  
  13. vector<string> string_split(string& str) {
  14.     vector<string> v;
  15.     string el = "";
  16.     for (size_t i = 0; i < str.size(); i++) {
  17.         if (str[i] == ' ') {
  18.             if (!el.empty()) {
  19.                 if (v.empty()) {
  20.                     v.push_back(el);
  21.                     v.push_back("");
  22.                 }
  23.                 else {
  24.                     v[1] += el + " ";
  25.                    
  26.                 }
  27.                 el = "";
  28.             }
  29.         }
  30.         else {
  31.             el += str[i];
  32.         }
  33.     }
  34.     v[1] += el;
  35.     return v;
  36. }
  37.  
  38. void print_join(vector<string>& v, string sep) {
  39.     if (v.empty()) {
  40.         cout << "<empty>\n";
  41.     }
  42.     else {
  43.         for (size_t i = 0; i < v.size() - 1; i++) {
  44.             cout << v[i] << sep;
  45.         }
  46.         cout << v.back() << endl;
  47.     }
  48. }
  49.  
  50. int main() {
  51.     map<int, vector<string>> fishBags;
  52.  
  53.     map<string, int> fishCount;
  54.  
  55.     string command;
  56.  
  57.     getline(cin, command);
  58.  
  59.     while (command != "END") {
  60.         vector<string> tokens = string_split(command);
  61.         int n = stoi(tokens[0]);
  62.         string fish = tokens[1];
  63.  
  64.         if (fish == "THROW") {
  65.             if (!fishBags[n].empty()) {
  66.                 fish = fishBags[n].back();
  67.                 fishCount[fish]--;
  68.                 if (fishCount[fish] == 0) {
  69.                     fishCount.erase(fish);
  70.                 }
  71.                 fishBags[n].pop_back();
  72.             }
  73.         }
  74.         else {
  75.             fishBags[n].push_back(fish);
  76.             fishCount[fish]++;
  77.         }
  78.        
  79.         getline(cin, command);
  80.     }
  81.  
  82.     for (auto& b : fishBags) {
  83.         cout << b.first << ": ";
  84.         print_join(b.second, ", ");
  85.     }
  86.  
  87.     vector<string> restaurantFish;
  88.  
  89.     getline(cin, command);
  90.  
  91.     while (command != "END") {
  92.         if (fishCount.find(command) != fishCount.end()) {
  93.             restaurantFish.push_back(command);
  94.         }
  95.         getline(cin, command);
  96.     }
  97.  
  98.     cout << "Restaurant: ";
  99.     if (restaurantFish.empty()) {
  100.         cout << "<nothing>\n";
  101.     }
  102.     else {
  103.         for (auto& f : restaurantFish) {
  104.             cout << f << ": " << fishCount[f];
  105.             fishCount.erase(f.c_str());
  106.             if (f != restaurantFish.back()) {
  107.                 cout << ", ";
  108.             }
  109.         }
  110.         cout << endl;
  111.     }
  112.    
  113.     cout << "Pate: ";
  114.     if (fishCount.empty()) {
  115.         cout << "<nothing>\n";
  116.     }
  117.     else {
  118.         for (auto& f : fishCount) {
  119.             cout << f.first << ": " << f.second;
  120.             if (f.first != fishCount.rbegin()->first) {
  121.                 cout << ", ";
  122.             }
  123.         }
  124.         cout << endl;
  125.     }
  126.    
  127.     return 0;
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement