You can just do binary search and solve it in $O(nlogn)$ time complexity.

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n,k,a,x;
    long long ans=0;
    cin>>n>>k;
    vector <int> v;
    for(int i=0;i<n;i++){
        cin>>a;
        v.push_back(a);
    }
    sort(v.begin(),v.end());
    vector <int>::iterator p=v.begin();
    for(int i=0;i<n;i++,p++){
        if(v[i]>=k){
            continue;
        }
        x=k-v[i]-1;
        vector <int>::iterator it=upper_bound(p,v.end(),x);
        ans+=it-p;
        if(v[i]<=x){
            ans--;
        }
    }
    cout<<ans;
    return 0;
}

Statistics

68% Solution Ratio
nuipqiunEarliest, Apr '20
Paul72Fastest, 0.0s
Lazy_ProgrammerLightest, 131 kB
mdvirusShortest, 169B
Toph uses cookies. By continuing you agree to our Cookie Policy.