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

четверг, 21 февраля 2019 г.

Начинающий Малевич

Известный художник решил написать новый шедевр. После многих дней усердной работы он захотел исследовать свое творение. Художник вспомнил, что картина писалась следующим образом: сначала был взят белый холст, имеющий форму прямоугольника шириной 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.

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

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