В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
катя4770
катя4770
02.06.2020 01:32 •  Информатика

Написать программу для решения на любом из яп

на одном из скучнейших уроков максим решил развлечь себя следующим странным он взял прямоугольный лист клетчатой бумаги размером n на m клеток и выбрал какие-то k из них. затем, для каждой выбранной клетки максим полностью закрасил столбец и строку, в которых эта клетка находится. в результате, на листе осталось несколько незакрашенных прямоугольных областей.

теперь максим хочет узнать количество таких областей, но, так как лист большой, ему нужна ваша .

формат файла входных данных:

в первой строке даны три числа n, m, и k – количество строк и столбцов в листе и количество выбранных клеток (1 ≤ n, m ≤ 104, 0 ≤ k ≤ 100). в следующих k строках даны два числа ri и ci – строка и столбец, в которых находится очередная выбранная клетка (1 ≤ ri ≤ n, 1 ≤ ci ≤ m). гарантируется, что каждая выбранная клетка встречается в списке только один раз.

формат файла выходных данных:

выведите одно число – количество незакрашенных прямоугольных областей.

система оценки:

правильные решения для n, m ≤ 10 оцениваются из 30 .

правильные решения для n, m ≤ 1000 оцениваются из 50 .

Показать ответ
Ответ:
Zabon
Zabon
16.07.2021 21:46
# coding: utf-8
# Python 3.X

'''
Вводятся четыре числа:
xa, ya: координаты ферзя
xb, yb: координаты другой фигуры

Координаты - целые числа
в интервале от 1 до 8.

Вывод - булево значение:
сможет ли ферзь побить фигуру
за 1 ход.
'''
def hits(xa, ya, xb, yb) -> bool:
    '''
    Проверка аргументов.
    '''
    args = (xa, ya, xb, yb)
    if any([not 1 <= z <= 8 for z in args]):
        raise ValueError("Неверные координаты!")

    '''
    На одной прямой.
    '''
    if xa == xb or ya == yb:
        return True

    '''
    Северо-западная диагональ.
    '''
    x_nw, y_nw = xa, ya
    while x_nw > 1 and y_nw > 1:
        x_nw -= 1
        y_nw -= 1
        if x_nw == xb and y_nw == yb:
            return True

    '''
    Юго-восточная диагональ.
    '''
    x_se, y_se = xa, ya
    while x_se < 8 and y_se < 8:
        x_se += 1
        y_se += 1
        if x_se == xb and y_se == yb:
            return True

    '''
    Юго-западная диагональ.
    '''
    x_sw, y_sw = xa, ya
    while x_sw > 1 and y_se < 8:
        x_sw -= 1
        y_sw += 1
        if x_sw == xb and y_sw == yb:
            return True

    '''
    Северо-восточная диагональ.
    '''
    x_ne, y_ne = xa, ya
    while x_ne < 8 and y_se > 1:
        x_ne += 1
        y_ne -= 1
        if x_ne == xb and y_ne == yb:
            return True

    return False # если не бьет

inp = [int(x) for x in input().split()]
if hits(*inp):
    print('YES')
else:
    print('NO')
0,0(0 оценок)
Ответ:
Ildar298
Ildar298
11.01.2021 19:29
//написано на си/си++
#include <iostream>#include <stdio.h>#include <time.h>
#define length 20
int main() { setlocale(LC_ALL, ""); srand(time(NULL));
int arr[length];
for (int i = 0; i < length; ++i) { arr[i] = rand() % 100 + 1; std::cout << arr[i] << "\n"; }
for (int i = 0; i < length; ++i) { if (arr[i] % 2 == 0) { for (int j = 0; j < length - 1; ++j) { if (arr[j] % 2 == 0) { if (arr[i] < arr[j]) {//сортировка будет происходить от Б к М int tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } } } } }
std::cout << "\nsorted array\n\n"; for (int i = 0; i < length; ++i) { std::cout << arr[i] << "\n"; }
system("pause"); return 0;}
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота