Another a+b FZU

来源:互联网 发布:面向对象编程的优势 编辑:程序博客网 时间:2024/05/18 02:26

a[i] + a[j] = M and 1<=i < j <=N.

初始的顺序其实没有关系

排序以后,对于要查找与a[i]匹配的值,范围[0,i-1].

#include <iostream>  #include <cstdio>  #include <cstdlib>  #include <cstring>  #include <algorithm>  #include <vector>  #include <map>  #include <cmath>  #include <set>  #include <queue>  using namespace std;    const int INF=1e9+10;  const double EPS = 1e-10;    typedef long long ll;  const int mod=1e9+7;int a[100005];int main(){int n,m;while(scanf("%d %d",&n,&m)!=EOF){for(int i=0;i<n;i++)scanf("%d",&a[i]);ll cnt=0;sort(a,a+n);for(int i=0;i<n;i++){int l=lower_bound(a,a+i,m-a[i])-a;int r=upper_bound(a,a+i,m-a[i])-a;cnt+=1LL*(r-l);}printf("%I64d\n",cnt);}        return 0;}