1 solutions
-
0
#include<bits/stdc++.h> using namespace std; #define int long long const int maxn=1e6+5; int N,C,a[maxn],ans=0; int lwbd(int goal,int n){ int l=1,r=n; while(l<r){ int mid=l+((r-l)>>1); if(a[mid]<goal)l=mid+1; else r=mid; } if(a[l]==goal)return l; else return -1; } int upbd(int goal,int n){ int l=1,r=n; while(l<r){ int mid=l+((r-l)>>1); if(a[mid]>goal)r=mid; else l=mid+1; } return l; } signed main(){ scanf("%lld%lld",&N,&C); for(int i=1;i<=N;i++){ scanf("%lld",&a[i]); } sort(a+1,a+N+1); for(int i=1;i<=N;i++){ int A=a[i]; if(A>C){ //cout<<lwbd(A-C)<<' '<<upbd(A-C)<<'\n'; if(lwbd(A-C,N)==-1)continue; else ans+=(upbd(A-C,N)-lwbd(A-C,N)); } } printf("%lld",ans); return 0; }
- 1
Information
- ID
- 297
- Time
- 1000ms
- Memory
- 125MiB
- Difficulty
- 8
- Tags
- # Submissions
- 40
- Accepted
- 6
- Uploaded By