Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
2 / 1 / 1
Регистрация: 05.11.2023
Сообщений: 24
1

Задача "Ильназ живет в большом доме" проходит половину тестов

05.11.2023, 14:38. Показов 2699. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Очень мощный роутер

Условие:


Ильназ живет в большом доме. Его дом выглядит как прямоугольник размера n на m метров.
Ильназ хочет поставить дома один роутер так, чтобы его сигнал доходил, в какой бы точке дома
он не сидел в интернете. У него дома есть k точек, где проведены розетки и он может поставить
роутер. А в лучшем онлайн магазине роутеров есть Q роутеров. Стоимость i-го роутера ci.

Он раздает интернет в любую точку на расстоянии не более wi метров. Но у Ильназа не так много
денег, чтобы просто купить самый мощный роутер, поэтому он хочет купить самый дешёвый, но
подходящий для его дома роутер, а если подходящего роутера нет, то он готов подождать. Помогите
Ильназу подобрать роутер.

Формат входных данных
Первая строка содержит четыре целых числа n, m, k и q — размеры дома, количество точек, где
есть розетки и количество доступных в магазине роутеров.

Следующие k строк содержат по два целых числа ai и bi — координаты розеток.
Следующие q строк содержат по два целых числа wi и ci — расстояние, на которое работает
роутер, и его стоимость.

Формат выходных данных
В единственной строке выведите одно целое число — стоимость подходящего роутера. Если нет
подходящих роутеров, выведите «-1» (без кавычек)


Мой код:


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
struct rout {
    long long distance;
    long long cost;
};
 
bool comp(const rout &r1, const rout &r2) {
    return r1.distance < r2.distance;
}
 
int main() {
    int n, m, k, q;
    cin >> n >> m >> k >> q;
 
    vector<pair<int, int>> outlets(k);
    for (int i = 0; i < k; i++) {
        cin >> outlets[i].first >> outlets[i].second;
    }
 
    vector<rout> routers(q);
    for (int i = 0; i < q; i++) {
        cin >> routers[i].distance >> routers[i].cost;
    }
 
    sort(all(routers), comp);
 
    int minCost = -1;
    for (int i = 0; i < q; i++) {
        bool valid = true;
        for (int j = 0; j < k; j++) {
            int distance = max(abs(outlets[j].first - n), abs(outlets[j].second - m));
            int y = sqrt(distance * distance + distance * distance);
            int nm = ceil(sqrt((abs(outlets[j].first - n) * abs(outlets[j].first - n) +
                             abs(outlets[j].second - m) * abs(outlets[j].second - m))));
            if (distance <= routers[i].distance || y > nm) {
                valid = true;
            }else {
                if (y <= nm || distance > routers[i].distance) {
                    valid = false;
                    break;
                }
            }
 
        }
        if (valid) {
            minCost = routers[i].cost;
            break;
        }
    }
 
    cout << minCost;
}

Подскажите что не так, плиз)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2023, 14:38
Ответы с готовыми решениями:

Задача Мостики проходит 11 тестов из 18
Помогите, пожалуйста Задача №111970. Мостики В стране гномов очень много речек и озер, а сами...

Задача про кошелек. Проходит 8 тестов из 10
Доброе время суток, решаю задачу (под спойлером), мое решение проходит 8 из 10 тестов. Я пробовал...

Кто в каком доме живет?
Доброго времени суток. К сожалению в прологе не силен,но решить данное задание ох как необходимо....

В доме живет N жильцов. Найти номер самого старшего жителя мужского пола
В доме живет N жильцов. Однажды решили провести перепись всех жильцов данного дома и составили...

3
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
05.11.2023, 15:55 2
Где центр координат и в чём твоя идея? distance - это что?
0
Вездепух
Эксперт CЭксперт С++
12784 / 6662 / 1794
Регистрация: 18.10.2014
Сообщений: 16,854
07.11.2023, 02:05 3
Цитата Сообщение от alecsa Посмотреть сообщение
Подскажите что не так, плиз)
Всё не так. Что это за вычисления и как они связаны с поиском решения данной задачи?
0
573 / 475 / 99
Регистрация: 05.08.2022
Сообщений: 2,598
07.11.2023, 13:20 4
Если сигнал достает до какого-то квадрата - то считаем, что приём будет во всем квадрате? или область приёма строго ограничена окружностью с центром в розетке?

Сорри, дошло: заданы конкретные координаты розеток, а не "номер квадрата", где расположена розетка
0
07.11.2023, 13:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.11.2023, 13:20
Помогаю со студенческими работами здесь

Составить программу, определяющую сколько учеников живёт на ул. Свердлова, списки учеников, живущих в доме номер 45
Описать, используя структуру данных записи, данные на учеников (фамилия, улица дом, квартира. )...

Не проходит пара тестов
Не могу отладить решение:cry: Посмотрите пожалуйста у кого есть минутка

Логическая задача (в каком городе живет каждый из ребят)
Однажды в Артеке за круглым столом оказалось пятеро ребят из Москвы, Санкт-Петербурга, Новгорода,...

Логическая задача: какое животное живет в какой среде? [SWI Prolog]
Построить базу знаний на основе текста: Живет зебра на земле. Живет собака на земле. Живет карп...

Логическая задача: определить, сколько и каких животных держат в каждом доме
Здравствуйте, помогите реализовать решение следующей логической задачи: На хуторе в трех домах...

Turbo prolog - задача на списки: определить, где живет Айрис и чем она занимается
Три дочери писательницы Дорис Кей - Джуди, Айрис и Линда тоже очень талантливы. Они приобрели...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru