Đ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\) có \(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\) và \(X\).
- Dòng tiếp theo chứa \(N\) số nguyên \(A_i\).
Output
- Hai vị trí \(i\) và \(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\) và \(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
\(10^6\) hơi ít. Vậy thì mảng không sort vẫn đc
def find_two_sum(N, X, A):
left, right = 0, N - 1
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)
This comment is hidden due to too much negative feedback. Click here to view it.
#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;
}
This comment is hidden due to too much negative feedback. Click here to view it.
This comment is hidden due to too much negative feedback. Click here to view it.
ảo thật đấy
ẢO THUẬT ĐẾI
trường hợp no solusion làm sao vậy ạ?
This comment is hidden due to too much negative feedback. Click here to view it.
18 bình luận nữa