Problem A: 两数之和

Memory Limit:128 MB Time Limit:1.000 S
Judge Style:Text Compare Creator:
Submit:312 Solved:90

Description

     给定一个 整数数组 nums 其中 n个整数已从小到大排好序。另给一个整数目标值 target,请你在该 nums 数组中找出和为目标值target的那两个整数,并返回它们的数组下标。(输出为二行,依序给出数值及下标,之间逗号分隔。) 

    给定的数据只存在一个有效的答案。而且要求数组中同一个元素在答案里不能重复出现。

    你可以想出一个时间复杂度小于 O(n^2) 的算法吗?

Input

    输入有二行。第一行为 n及 target。第二行为n个整数。数字间空格分隔。

n,target=map(int, input().split())

nums = [int(i) for i in input().split()]

Output

    分两行输出和为target的两个整数。第一行为在排序 nums数组中前一个数,输出其数值及下标。第二行为在排序 nums数组中后一个数,输出其数值及下标。数字间逗号分隔。

Sample Input Copy

7 -10
-21 -16 0 2 5 6 7

Sample Output Copy

-16,1
6,5

HINT

提示: 2 <= nums长度 <= 10^6 -10^7 <= nums[i] <= 10^7 -10^7 <= target <= 10^7 只会存在一个有效答案 你可以想出一个时间复杂度小于 O(n^2) 的算法吗?