有序数组查找两数之和(c++题解)
题目描述
题目描述
给定一个升序排列的整数数组和一个目标值 。要求从数组中找出满足相加之和等于 目标值的两个不同的数(指下标不同),并输出这两个数字,小数在前,大数在后。如果没有找到,输出两个-1,中间用空格隔开
输入格式
第一行输入两个整数 和 ,分别表示数组元素数量和目标值。
第二行输入 个整数,表示数组元素值。
输出格式
若有解,输出答案,小数在前,大数在后。 否则输出两个,中间用空格隔开
样例
样例输入1
复制4 9
2 7 11 15
样例输出1
复制2 7
样例输入2
复制3 6
2 3 4
样例输出2
复制2 4
样例输入3
复制2 -1
-1 0
样例输出3
复制-1 0
_____________________________________________________________________________
日常发作业题解。
也是简单到爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆表的题
写作不易,点个赞呗!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
____________________________________________________________________________
#include <bits/stdc++.h>
using namespace std;
int a[10000005],n,m,ans;
int main(){cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i];}int l=1,r=n;while(l<r){if(a[l]+a[r]==m){cout<<min(a[l],a[r])<<" ";cout<<max(a[l],a[r]);return 0;}if(a[l]+a[r]>m)r--;if(a[l]+a[r]<m)l++;}cout<<"-1 -1";
}