Points:
200 (p)
Time limit:
1.0s
Memory limit:
640M
Input:
stdin
Output:
stdout
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
Comments
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;
}
dễ vãi
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.
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.
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.
16 more comments