Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <string>
- #include <numeric>
- #include <iomanip>
- int main() {
- //структура для храниния пользователя и прочитанных страниц
- std::vector<int16_t> readers(1000001, 0);
- //readers.reserve(1000000);
- //структура для хранения кол-ва пользователей дочитавших до страницы n
- std::vector<int32_t> readers_count(1001, 0);
- //readers_count.reserve(1000);
- //
- int16_t count = 0;
- //считаем кол-во запросов
- int32_t queries_count;
- std::cin >> queries_count;
- //обработаем запросы
- for (int32_t query_number = 0; query_number < queries_count; ++query_number) {
- //считаем тип запроса
- std::string query_type;
- std::cin >> query_type;
- //считаем id читателя
- int32_t reader_id;
- std::cin >> reader_id;
- if (query_type == "CHEER") {
- if (readers[reader_id] == 0) {
- std::cout << 0 << std::endl;
- }
- else if (count == 1) {
- std::cout << 1 << std::endl;
- } else {
- auto page_number = readers[reader_id];
- auto count_to_page = std::reduce(readers_count.begin(), readers_count.begin() + page_number);
- double dolya = static_cast<double>(count_to_page) / (static_cast<double>(count) - 1);
- std::cout << std::setprecision(6) << dolya << std::endl;
- }
- }
- else if (query_type == "READ") {
- //считаем кол-во пролчитанных страниц
- int16_t pages_count;
- std::cin >> pages_count;
- if (pages_count == 0) {
- continue;
- }
- if (readers[reader_id] == 0) {
- ++count;
- }
- else {
- readers_count[readers[reader_id]] -= 1;
- }
- //сохраним данные
- readers[reader_id] = pages_count;
- readers_count[pages_count] += 1;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment