patrikey

ebook.cpp

May 21st, 2023
1,151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.87 KB | Source Code | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. #include <numeric>
  5. #include <iomanip>
  6.  
  7. int main() {
  8.     //структура для храниния пользователя и прочитанных страниц
  9.     std::vector<int16_t> readers(1000001, 0);
  10.     //readers.reserve(1000000);
  11.     //структура для хранения кол-ва пользователей дочитавших до страницы n
  12.     std::vector<int32_t> readers_count(1001, 0);
  13.     //readers_count.reserve(1000);
  14.     //
  15.     int16_t count = 0;
  16.     //считаем кол-во запросов
  17.     int32_t queries_count;
  18.     std::cin >> queries_count;
  19.     //обработаем запросы
  20.     for (int32_t query_number = 0; query_number < queries_count; ++query_number) {
  21.         //считаем тип запроса
  22.         std::string query_type;
  23.         std::cin >> query_type;
  24.         //считаем id читателя
  25.         int32_t reader_id;
  26.         std::cin >> reader_id;
  27.         if (query_type == "CHEER") {
  28.             if (readers[reader_id] == 0) {
  29.                 std::cout << 0 << std::endl;
  30.             }
  31.             else if (count == 1) {
  32.                 std::cout << 1 << std::endl;
  33.             } else {
  34.                 auto page_number = readers[reader_id];
  35.                 auto count_to_page = std::reduce(readers_count.begin(), readers_count.begin() + page_number);
  36.                 double dolya = static_cast<double>(count_to_page) / (static_cast<double>(count) - 1);
  37.                 std::cout << std::setprecision(6) << dolya << std::endl;
  38.             }
  39.         }
  40.         else if (query_type == "READ") {
  41.             //считаем кол-во пролчитанных страниц
  42.             int16_t pages_count;
  43.             std::cin >> pages_count;
  44.             if (pages_count == 0) {
  45.                 continue;
  46.             }
  47.             if (readers[reader_id] == 0) {
  48.                 ++count;
  49.             }
  50.             else {
  51.                 readers_count[readers[reader_id]] -= 1;
  52.             }
  53.             //сохраним данные
  54.             readers[reader_id] = pages_count;
  55.             readers_count[pages_count] += 1;
  56.         }
  57.     }
  58. }
Advertisement
Add Comment
Please, Sign In to add comment