题目描述:
给定一个长度为 n 的数组a 和 k,小信想知道数组中有多少对数相加等于 k 。
输入格式:
第一行包含两个整数 n,k。
第二行 n 个整数 ai。
输出格式:
输出一个整数表示有多少对。
样例1
输入:
3 4
2 2 2
样例1输出:
3
样例2输入:
4 5
3 1 2 4
样例2输出:
2
WA20代码,求调
#include<bits/stdc++.h>
using namespace std;
int a[100001];
int main(){
int n,k;
scanf("%d %d",&n,&k);
for(int i=0;i<n;++i){
scanf("%d",&a[i]);
}
sort(a,a+n);
int l=0,r=n-1,ans=0;
while (l<r){
if (a[l]+a[r]==k){
ans++;
++l;
--r;
}
else if (a[l]+a[r]>k){
--r;
}
else{
l++;
}
}
printf("%d",ans);
return 0;
}