Đếm cặp đôi (HSG'20)

Xem PDF

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

Cho dãy số \(A\) gồm \(n\) phần tử nguyên dương \(A_1,A_2,…,A_n\). Mỗi phần tử có giá trị không vượt quá \(10^9\)\(n≤ 10^5\). Một cặp số được gọi là cặp tương đồng với \(x\), nếu cặp số này có tổng bằng số \(x\) cho trước nào đó.

Yêu cầu: Hãy đếm xem trong dãy số \(A\) có bao nhiêu cặp số (\(A_i;A_j\)) tương đồng với \(x\) (có nghĩa là \(A_i+ A_j=x\)) với \(i<j\).

Input

  • Dòng đầu tiên chứa dãy số \(n,x\) (\(n≤10^5,x≤10^6\)).
  • Dòng thứ 2 chứa \(n\) phần tử của dãy số \(A\) (\(A_i≤10^9\)).

Output

  • Ghi ra một số nguyên là cặp đôi tương đồng của dãy số.

Example

Test 1

Input
7 6
1 2 4 3 4 5 3 
Output
4

Bình luận

  • kiritoalicezation 10:14 a.m. 20 Tháng 1, 2025

    c++11

    include <bits/stdc++.h>
    using namespace std;
    int main() {
    int n, x, result = 0;
    cin >> n >> x;
    unordered_map<int, int> freq;
    while (n--) {
    int num;
    cin >> num;
    result += freq[x - num];
    freq[num]++;
    }
    cout << result << endl;
    return 0;
    }

    • loctagia 10:05 a.m. 29 Tháng 11, 2024

      include <bits/stdc++.h>

      using namespace std;

      int main() {
      ios_base::sync_with_stdio(0);
      cin.tie(0);
      cout.tie(0);
      int n, k, x;
      cin >> n >> k;
      map <int, int> a;
      int c = 0;
      for (int i = 0; i < n; ++i) {
      cin >> x;
      c += a[k - x];
      ++a[x];
      }
      cout << c;
      return 0;
      }

      • SBD20_Caominhduc 2:47 p.m. 1 Tháng 10, 2024 chỉnh sửa 3

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

        • PY1APhanGiaHung 5:54 p.m. 21 Tháng 9, 2024

          n, x = map(int, input().split())
          a = list(map(int, input().split()))
          c = {}
          ans = 0
          for p in a:
          tab q = x - p
          tab if q in c:
          tab ans += c[q]
          tab if p in c:
          2tab c[p] += 1
          tap else:
          2tab c[p] = 1
          print(ans)

          • tk22NguyenHuyPhuc 10:27 p.m. 7 Tháng 8, 2024

            def count_pairs(n, x, A):
            count = 0
            frequency = {}

            for num in A:
                target = x - num
                if target in frequency:
                    count += frequency[target]
            
                if num in frequency:
                    frequency[num] += 1
                else:
                    frequency[num] = 1
            
            return count
            

            n, x = map(int, input().split())
            A = list(map(int, input().split()))

            result = count_pairs(n, x, A)
            print(result)

            • anhduc11092014 9:47 a.m. 30 Tháng 7, 2024

              n,x = list(map(int, input().split()))
              a = list(map(int, input().split()))
              c = {}
              ans = 0
              for p in a:
              q = x-p
              if q in c:
              ans = ans+c[q]
              if p in c:
              c[p] = c[p]+1
              else:
              c[p] = 1
              print(ans)

              • Đăng_Khoa 10:37 a.m. 22 Tháng 7, 2024

                n, x = map(int, input().split())
                a = list(map(int, input().split()))
                d = {}
                for i in a:
                if i in d:
                d[i] += 1
                else:
                d[i] = 1
                t = 0
                for i in a:
                kq = x - i
                if kq in d:
                t += d[kq]
                t //= 2
                print(t)

                • TK22NguyenPhat 10:18 p.m. 23 Tháng 5, 2024 đã chỉnh sửa
                  
                  
                  • PY1CLeDongQuan 11:52 a.m. 29 Tháng 4, 2024

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

                    • thinhec12012007 9:51 p.m. 24 Tháng 4, 2024

                      Mọi người có thể tham khảo code :

                      include <bits/stdc++.h>

                      using namespace std;
                      map<int,int>mp;

                      define ll long long

                      int n,k,x;
                      ll res=0;
                      int main() {
                      ios_base::sync_with_stdio(0);
                      cin.tie(0);cout.tie(0);
                      cin>>n>>k;
                      int tam;
                      for(int i=1;i<=n;i++) {
                      cin>>x;
                      mp[x]++;
                      tam=k-x;
                      if(k-x!=x)
                      res+=mp[k-x];

                      }
                      ll gan=mp[k/2];
                      if(gan>=2) gan--;
                      else gan=0;
                      
                      cout<<res+(gan*(gan+1)/2);
                      return 0;
                      

                      }

                      • 8 bình luận nữa