Fri Aug 31, 2012 9:39 pm
Admin Trên mặt phẳng tạo độ Oxy cho 1 số hcn mà các cạnh của nó song song với trục tọa độ . Các hcn này có thể chồng lên nhau , mỗi hcn được xác định bởi tọa độ góc trái dưới và góc phải trên của nó , giả sử các tọa độ này là các số nguyên .
Hãy tính tổng độ dài của đường biên của hcn i(1..n) các số trên dòng cách nhau 1 khoảng trắng
INP
6
1 2 3 6
3 5 6 7
5 2 6 6
2 3 6 4
7 3 10 8
8 5 9 7
OUT
44
Hãy tính tổng độ dài của đường biên của hcn i(1..n) các số trên dòng cách nhau 1 khoảng trắng
INP
6
1 2 3 6
3 5 6 7
5 2 6 6
2 3 6 4
7 3 10 8
8 5 9 7
OUT
44
- Code:
Const fi='INP.inp'; fo='OUT.out';
Var A:array[0..101,0..101] Of Integer;
min,min1,max,max1,n:Integer;
f,g:text;
Procedure doctep;
Var i,j:Integer;
k,l,x,y,x1,y1:Integer;
Begin
max1:=0;
max:=0;
min:=maxint;
min1:=maxint;
Assign(f,fi);
Reset(F);
Readln(f,n);
Fillchar(a,sizeof(a),0);
For i:=1 to n do
Begin
Readln(f,x,y,x1,y1);
If x < min then min:=x;
If y < min1 then min1:=y;
If x1 > max then max:=x1;
If y1 > max1 then max1:=y1;
For k:=x+1 to x1 do
For l:=y+1 to y1 do
a[k,l]:=1;
End;
dec(min);
dec(min1);
inc(max);
inc(max1);
Close(f);
Assign(g,fo);
Rewrite(G);
End;
Function tinh(x,y:Integer):Integer;
Var t:Integer;
Begin
t:=0;
If a[x-1,y]=0 then inc(t);
If a[x,y-1]=0 then inc(t);
If a[x,y+1]=0 then inc(t);
If a[x+1,y]=0 then inc(t);
tinh:=t;
End;
Procedure xuly;
Var p,i,j:Integer;
Begin
p:=0;
For i:=min to max do
For j:=min1 to max1 do
If a[i,j]=1 then
p:=p+tinh(i,j);
Writeln(g,p:4);
End;
Begin
doctep;
xuly;
Close(g);
End.