Tổng bằng 0

Xem PDF

Điểm: 200 (p) Thời gian: 1.0s Bộ nhớ: 1023M Input: bàn phím Output: màn hình

Bạn được cho một dãy số \(a\) gồm \(n\) số nguyên. Nhiệm vụ của bạn là tìm số cặp số \((i,j) \ 1 \leq i \leq j \leq n\) sao cho \(a_i + a_{i+1} + ... + a_j = 0\)

Input

  • Dòng đầu tiên chứa số nguyên dương \(n \ (1 \leq n \leq 10^5)\) - là số phần tử của mảng.
  • Dòng thứ hai chứa \(n\) số nguyên, số thứ \(i\)\(a_i\) \(( \mid a_i\mid \leq 10^9)\)

Output

  • Số lượng cặp số \((i,j)\) thõa mãn điều kiện trên

Example

Test 1

Input
4
-3 3 -4 4
Output
3

Bình luận


  • -8
    vô_nhiễm    6:43 a.m. 27 Tháng 6, 2020

    Bình luận bị ẩn vì nhiều phản hồi tiêu cực. Nhấp vào đây để mở.


    • 3
      jumptozero    11:13 a.m. 27 Tháng 6, 2020 đã chỉnh sửa

      Mình nghĩ bài này map sẽ không dùng được vì các \(|a[i]|\sim 1e9\)


      • 0
        mimibetty    11:30 a.m. 28 Tháng 6, 2020

        map + set hình như vẫn ổn mà nhỉ??


        • 0
          SPyofgame    4:24 p.m. 27 Tháng 6, 2020

          \(std::map\) chơi được mà anh


        • 6
          SPyofgame    8:04 a.m. 27 Tháng 6, 2020 đã chỉnh sửa

          đpt phải là \(O(n \log n)\) chứ anh

        2 bình luận nữa