Advertisement
OIQ

Untitled

OIQ
Feb 2nd, 2022
712
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.68 KB | None
  1. #include <utility>
  2. #include <iostream>
  3. #include <vector>
  4. #include <string>
  5.  
  6. void handleInput(const std::string& input, std::vector<int>* vec) {
  7.     std::string number;
  8.     for (char i : input) {
  9.         if (i >= '0' && i <= '9') {
  10.             number += i;
  11.         } else {
  12.             vec->push_back(std::stoi(number));
  13.             number = "";
  14.         }
  15.     }
  16.     if (!number.empty()) {
  17.         vec->push_back(std::stoi(number));
  18.     }
  19. }
  20.  
  21. void selectionSort(std::vector<int>* vec, bool order = true) {
  22.     if (vec->empty()) {
  23.         return;
  24.     }
  25.  
  26.     int swap_count = 0;
  27.     for (int iter = 0; iter < vec->size() - 1; ++iter) {
  28.         int index = iter;
  29.         if (order) {
  30.             for (int j = iter + 1; j < vec->size(); ++j) {
  31.                 if ((*vec)[index] > (*vec)[j]) {
  32.                     index = j;
  33.                 }
  34.             }
  35.         } else {
  36.             for (int j = iter + 1; j < vec->size(); ++j) {
  37.                 if ((*vec)[index] < (*vec)[j]) {
  38.                     index = j;
  39.                 }
  40.             }
  41.         }
  42.  
  43.         if (index != iter) {
  44.             std::swap((*vec)[iter], (*vec)[index]);
  45.             swap_count++;
  46.         }
  47.     }
  48. }
  49.  
  50. int main() {
  51.     std::vector<int> dist;
  52.     std::vector<int> price;
  53.     std::string input;
  54.  
  55.     std::getline(std::cin, input);
  56.     handleInput(input, &dist);
  57.     std::getline(std::cin, input);
  58.     handleInput(input, &price);
  59.  
  60.     int size = price.size();
  61.  
  62.     selectionSort(&dist);
  63.     selectionSort(&price, false);
  64.  
  65.     int64_t sum = 0;
  66.     for (int i = 0; i < size; ++i) {
  67.         sum += static_cast<int64_t>(dist[i]) * price[i];
  68.     }
  69.  
  70.     std::cout << sum;
  71.     return 0;
  72. }
  73.  
Advertisement
RAW Paste Data Copied
Advertisement