Tọa độ xoắn ốc

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1200 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Một bảng số vô hạn được điền các số tự nhiên \(1, 2, 3, \dots\) bắt đầu từ gốc tọa độ \((0, 0)\) và đi theo đường xoắn ốc ngược chiều kim đồng hồ như sau:

  • \((0, 0) \to 1\)
  • \((1, 0) \to 2, (1, 1) \to 3, (0, 1) \to 4, (-1, 1) \to 5, (-1, 0) \to 6, (-1, -1) \to 7, (0, -1) \to 8, (1, -1) \to 9\)
  • \((2, -1) \to 10, \dots\)

Yêu cầu

Cho trước một tọa độ \((X, Y)\), hãy xác định giá trị số được điền tại ô đó.

Input

  • Một dòng duy nhất chứa hai số nguyên \(X, Y\).

Output

  • Một số nguyên duy nhất là giá trị tại tọa độ đó.

Example

Test 1

Input
-1 1
Output
5
Note

Theo quy luật xoắn ốc bên trên, ô \((-1, 1)\) mang giá trị \(5\).

Test 2

Input
2 2
Output
13
Note

Vòng xoắn tiếp theo sẽ chạm tới ô \((2, 2)\) tại bước thứ \(13\).

Constraints

  • Subtask \(1\) (\(40\) điểm): \(|X|, |Y| \le 100\).
  • Subtask \(2\) (\(60\) điểm): \(|X|, |Y| \le 10^9\).

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.