AcWing 1532. 找硬币(双指针法)
原题链接
简单
作者:
我要出去乱说
,
2021-02-05 01:01:54
,
所有人可见
,
阅读 329
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1e5 + 10;
int n, m;
int f[N];
int main()
{
cin >> n >> m;
for (int i = 0; i < n; i ++ ) cin >> f[i];
sort(f, f + n);
int i = 0, j = n - 1; //一前一后双指针遍历
while (i < j)
{
if (f[i] + f[j] > m) j -- ; //大于目标值就让右端点向左靠拢
else if (f[i] + f[j] < m) i ++ ; //小于目标值就让左端点向右靠拢
else
{
cout << f[i] << ' ' << f[j] << endl;
return 0;
}
}
cout << "No Solution" << endl;
return 0;
}