Поиск по этому блогу

суббота, 11 апреля 2020 г.

Задача про художника исследователя

Известный художник решил написать новый шедевр. После многих дней усердной работы он захотел исследовать свое творение. Художник вспомнил, что картина писалась следующим образом: сначала был взят белый холст, имеющий форму прямоугольника шириной w и высотой h. Затем художник нарисовал на этом холсте n прямоугольников со сторонами, параллельными сторонам холста и вершинами, расположенными в целочисленных координатах. Помогите художнику определить площадь незакрашенной части холста.

Входные данные
Первая строка входного файла INPUT.TXT содержит два натуральных числа w и h (1 ≤ w, h ≤ 100). Во второй строке записано целое число n (0 ≤ n ≤ 5000) – количество прямоугольников. Следующие n строк содержат информацию о всех прямоугольниках. Каждая строка описывает один прямоугольник в виде четырех чисел x1, y1, x2, y2 , где (x1, y1) и (x2, y2) – координаты левого верхнего и правого нижнего угла прямоугольника соответственно.
Выходные данные
Выведите в выходной файл OUTPUT.TXT одно целое число – площадь незакрашенной части холста.
Примеры
INPUT.TXT
OUTPUT.TXT
1
5 5
2
1 1 3 3
2 2 4 4
18
2
6 7
3
0 0 5 5
1 1 4 4
2 2 3 3
17

Пояснение к первому примеру
Решение
var  i,j,n,m,k,l,b,c,d,e:integer;
 a:array[1..100,1..100] of integer;
f,f1:text;
begin
assign(f,'input.txt'); 
    reset(f); 
     assign(f1,'output.txt'); 
     rewrite(f1); 
    readln(f,n,m);
    for i:=1 to n do
    for j:=1 to m do
    a[i,j]:=1;
    readln(f,k);
    for l:=1 to k do
    begin
    readln(f,c,b,d,e);
    for i:=c+1 to d do
    for j:=b+1 to e do
     a[i,j]:=0;
    end;
    k:=0;
    for i:=1 to n do
    for j:=1 to m do
    k:=k+a[i,j];
    write(f1,k);
  close(f);
  close(f1); 
end.

Комментариев нет:

Отправить комментарий