trang chủ / bài tập / minsumvec

Tổng nhỏ nhất

Đề bài

Mô tả

Cho n vector trên mặt phẳng. Với mỗi vector vi=(xi,yi), bạn được phép biến đổi nó thành một trong bốn vector sau bằng cách đổi dấu một hoặc cả hai toạ độ:

  • vi(1)=(xi, yi)
  • vi(2)=(xi, yi)
  • vi(3)=(xi, yi)
  • vi(4)=(xi, yi)

Hãy chọn hai vector khác nhau vivj (ij), và hai chỉ số biến đổi k1,k2{1,2,3,4}, sao cho độ dài (giá trị tuyệt đối) của tổng hai vector |vi(k1)+vj(k2)| là nhỏ nhất có thể.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n.
  • n dòng tiếp theo, mỗi dòng chứa hai số nguyên xi, yi — toạ độ của vector vi.

Dữ liệu ra

In ra bốn số nguyên i k1 j k2 trên một dòng, cách nhau bởi dấu cách, sao cho |vi(k1)+vj(k2)| là nhỏ nhất. Nếu có nhiều phương án cho cùng giá trị nhỏ nhất, bạn có thể in ra một phương án bất kỳ.

Ràng buộc

  • 2n105
  • 104xi,yi104

Ví dụ

Input Output Giải thích
5
3 2
-4 7
-6 0
-8 4
5 1
5 1 3 1 Chọn v5=(5,1) (biến đổi 1) và v3=(6,0) (biến đổi 1). Tổng (1,1) có độ dài 2. Có thể có nhiều đáp án khác cùng đạt giá trị này.
5
-7 -3
9 0
-8 6
7 -8
4 -5
4 1 3 1 Chọn v4=(7,8) (biến đổi 1) và v3=(8,6) (biến đổi 1). Tổng (1,2) có độ dài 5.

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.400 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.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0