Tìm cặp số

Xem PDF

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

Cho một mảng số nguyên \(A\)\(N\) phần tử, mảng này đã được sắp xếp tăng dần. Hãy tìm vị trí của hai phần tử khác nhau bất kỳ sao cho tổng của chúng có giá trị là \(X\). Nếu trong dãy \(A\) không tồn tại hai phần tử khác nhau có tổng là \(X\) thì in ra "No solution".

Input

  • Dòng đầu chứa 2 số nguyên \(N\)\(X\).
  • Dòng tiếp theo chứa \(N\) số nguyên \(A_i\).

Output

  • Hai vị trí \(i\)\(j\) khác nhau sao cho tổng ở hai vị trí này có giá là \(X\). In vị trí phần tử nhỏ hơn trước phần tử lớn hơn.
  • Nếu không tồn tại in ra "No solution".

Constants

  • \(2 \leq N \leq 10^6\)\(0 \leq A_i, X \leq 10^9\)

Example

Test 1

Input
6 16
2 3 5 7 9 12
Output
4 5

Bình luận

  • UserZero 11:45 a.m. 2 Tháng 3, 2025

    \(10^6\) hơi ít. Vậy thì mảng không sort vẫn đc

    • phanvinh21092013 5:53 p.m. 2 Tháng 12, 2024

      def find_two_sum(N, X, A):
      left, right = 0, N - 1

      while left < right:
          total = A[left] + A[right]
          if total == X:
              print(left + 1, right + 1)  # In ra vị trí, nhớ cộng 1 vì mảng bắt đầu từ chỉ số 1
              return
          elif total < X:
              left += 1
          else:
              right -= 1
      
      print("No solution")
      

      Nhập dữ liệu

      N, X = map(int, input().split())
      A = list(map(int, input().split()))

      Gọi hàm tìm kiếm

      find_two_sum(N, X, A)

      • dxuhai 2:50 p.m. 12 Tháng 5, 2024

        This comment is hidden due to too much negative feedback. Click here to view it.

        • SBD02_Long 7:38 a.m. 12 Tháng 5, 2024

          #include <bits/stdc++.h>
          using namespace std;
          const int M = 1e6 + 16;
          int a[M];
          int main()
          {
          int n, x;
          cin >> n >> x;
          for (int i = 1; i <= n; ++i)
          cin >> a[i];
          for (int l = 1, r = n; l < r; ++l)
          {
          while (l < r - 1 && a[l] + a[r] > x) --r;
          if (a[l] + a[r] == x)
          {
          cout << l << ' ' << r;
          return 0;
          }
          }
          cout << "No solution";
          return 0;
          }

          • kietlqt 4:14 p.m. 9 Tháng 5, 2024

            This comment is hidden due to too much negative feedback. Click here to view it.

            • kietlqt 4:14 p.m. 9 Tháng 5, 2024

              This comment is hidden due to too much negative feedback. Click here to view it.

              • tuanhung2206_ÁHASDHASHDJ 5:55 p.m. 21 Tháng 1, 2024

                ảo thật đấy

                • MinhTri2400811 10:50 a.m. 14 Tháng 1, 2024

                  ẢO THUẬT ĐẾI

                  • huynocode 11:14 a.m. 17 Tháng 5, 2023

                    trường hợp no solusion làm sao vậy ạ?

                    • duygabaga 10:34 a.m. 11 Tháng 2, 2023

                      This comment is hidden due to too much negative feedback. Click here to view it.

                      • 18 bình luận nữa