POSIPROD

Xem PDF



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

Cho dãy số nguyên \(a_1,a_2,...,a_n\).

Bạn có thể thực hiện phép biến đổi sau với số lần tùy ý (có thể không thực hiện lần nào):

  • Chọn một vị trí \(i\) bất kỳ \((1 \le i \le n)\), và đảo dấu \(a_i\) (tức là \(a_i = -a_i\))

Hãy tính số phép biến đổi ít nhất để thỏa mãn: tích hai phần tử bất kỳ của dãy luôn lớn hơn 0.

Input

  • (Đọc từ file văn bản posiprod.inp)

  • Dòng đầu: \(n\) \((n \le 100)\)

  • Dòng sau: \(a_1,a_2,...,a_n\) \((|a_i| \le 1000)\)

Output

  • (Ghi ra file văn bản posiprod.out)

  • Đáp án thỏa mãn yêu cầu đề bài. Nếu không có cách biến đổi nào, in ra -1.

Example

Test 1

Input
3
1 2 3 
Output
0

Test 2

Input
3
0 1 2 
Output
-1

Bình luận


  • 0
    tienthanh2007    9:45 p.m. 16 Tháng 10, 2022

    sao luc thi in ra 0 luc thi in ra -1 the admin oi minh chua hieu lam


    • 1
      dang7rickroll    9:58 p.m. 16 Tháng 10, 2022
      • In ra 0 khi không cần bất cứ phép biến đổi nào cả;
      • In ra -1 khi dù cần bất cứ bao nhiêu phép toán (có thể là 0) đi chăng nữa thì vẫn không thể thỏa mãn yêu cầu đề bài.

      Vậy ta có thể suy ra

      • In ra 0 khi tích của dãy số luôn lớn hơn 0;
      • In ra -1 khi tích của dãy số luôn bằng 0.
      1 bình luận nữa