Đoạn thẳng của Vika

Đề bài

Mô tả

Trên một tờ giấy kẻ ô vuông vô hạn, ban đầu mọi ô đều màu trắng. Người ta thiết lập một hệ tọa độ và vẽ n đoạn thẳng màu đen nằm ngang hoặc thẳng đứng, song song với các trục tọa độ. Mỗi đoạn thẳng có độ rộng bằng đúng 1 ô, nghĩa là nó tô đen một dãy các ô liên tiếp nằm trên cùng một hàng hoặc cùng một cột.

Đoạn thẳng thứ i được cho bởi tọa độ hai đầu mút (x1,y1) và (x2,y2). Vì đoạn song song với trục tọa độ nên hoặc x1=x2 (đoạn thẳng đứng), hoặc y1=y2 (đoạn nằm ngang). Đoạn này tô đen tất cả các ô (x,y) với min(x1,x2)≤x≤max(x1,x2) và min(y1,y2)≤y≤max(y1,y2).

Hãy đếm số ô được tô đen. Một ô bị nhiều đoạn tô lên vẫn chỉ được tính đúng một lần.

Các đoạn thẳng có thể chạm nhau, chồng lên nhau, thậm chí trùng nhau hoàn toàn.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n — số đoạn thẳng.
  • n dòng tiếp theo, mỗi dòng chứa bốn số nguyên x1,y1,x2,y2 — tọa độ hai đầu mút của một đoạn thẳng. Đảm bảo mọi đoạn đều song song với trục tọa độ.

Dữ liệu ra

In ra một số nguyên duy nhất — số ô được tô đen (mỗi ô tính một lần).

Ràng buộc

  • 1≤n≤105
  • −109≤x1,y1,x2,y2≤109

Ví dụ

Input Output Giải thích
3
0 1 2 1
1 4 1 2
0 3 2 3
8 Các ô được tô: (0,1),(1,1),(2,1) (đoạn ngang hàng y=1); (1,2),(1,3),(1,4) (đoạn dọc cột x=1); (0,3),(2,3) (đoạn ngang hàng y=3, ô (1,3) đã được tính). Tổng cộng 8 ô.
4
-2 -1 2 -1
2 1 -2 1
-1 -2 -1 2
1 2 1 -2
16 Bốn đoạn tạo thành một hình vuông rỗng; mỗi cạnh dài 5 ô, bốn góc dùng chung nên tổng số ô là 4×5−4=16.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0