Rời quán bar

Đề bài

Mô tả

Cho n vector v1,v2,,vn trên mặt phẳng. Bạn bắt đầu tại gốc tọa độ (0,0) và thực hiện n bước di chuyển. Ở bước thứ i, bạn được chọn một dấu ci{1,+1} rồi cộng vector ci·vi vào vị trí hiện tại.

Gọi vị trí cuối cùng là p=i=1nci·vi. Hãy tìm một dãy dấu c1,c2,,cn sao cho

|p|1.5·106,

trong đó |v|=x2+y2 là độ dài Euclid của vector.

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

Dữ liệu vào

  • Dòng đầu chứa số nguyên n — số vector.
  • n dòng tiếp theo, dòng thứ i chứa hai số nguyên xiyi — tọa độ của vector vi=(xi,yi).

Dữ liệu ra

In ra n số c1,c2,,cn trên một dòng, mỗi số bằng 1 hoặc 1, sao cho vector tổng p=civi thỏa |p|1.5·106.

Nếu có nhiều đáp án hợp lệ, in ra bất kỳ đáp án nào trong số đó.

Ràng buộc

  • 1n105
  • |vi|106 với mọi i
  • Tọa độ xi,yi là các số nguyên

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), p1061.5·106. Các đáp án khác như -1 -1 1 cũng được chấp nhận.
1
-824590 246031
1 Chỉ có một vector, chọn dấu nào cũng cho p106.
3
1000000 0
0 999999
300000 -300000
-1 1 1 p=(1000000,0)+(0,999999)+(300000,300000)=(700000,699999), p9899491.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