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

Rời quán rượu

Đề bài

Mô tả

Với vector v=(x,y), đặt |v|=x2+y2 là độ dài của nó.

Cho n vector v1,v2,,vn. Xuất phát từ gốc toạ độ (0,0), bạn thực hiện n bước di chuyển. Ở bước thứ i, bạn chọn một trong hai hướng: nếu vị trí hiện tại là p, bạn di chuyển tới p+vi hoặc tới pvi.

Nói cách khác, bạn phải chọn cho mỗi vector một dấu ci{1,1} sao cho vị trí cuối cùng

p=i=1ncivi

thoả mãn |p|1.5·106.

Có thể chứng minh rằng với các ràng buộc đã cho, luôn tồn tại một cách chọn dấu hợp lệ. Nếu có nhiều đáp án, in ra bất kỳ cách nào.

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên n là số bước di chuyển.
  • n dòng tiếp theo, dòng thứ i chứa hai số nguyên xiyi, nghĩa là vi=(xi,yi).

Dữ liệu ra

In ra một dòng gồm n số nguyên c1,c2,,cn, mỗi số bằng 1 hoặc 1, sao cho |p|1.5·106.

Ràng buộc

  • 1n105
  • |vi|106 với mọi i (tức xi2+yi21012)

Ví dụ

Input Output Giải thích
3
999999 0
0 999999
999999 0
-1 1 1 p=(999999,0)+(0,999999)+(999999,0)=(0,999999), có |p|=9999991.5·106. Đáp án không duy nhất; ví dụ 1 1 -1 cũng hợp lệ.
1
-824590 246031
1 Chỉ có một vector; p=(824590,246031), |p|8605141.5·106. Chọn -1 cũng hợp lệ vì đáp án không duy nhất.
8
-67761 603277
640586 -396671
46147 -122580
569609 -2112
400 914208
131792 309779
-850150 -486293
5272 721899
1 -1 1 1 -1 1 1 1 Một cách chọn dấu cho tổng p(806077,506433) có độ dài 951·1031.5·106.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0