3 solutions
-
2
用long long
#include<iostream> #include<algorithm> #include<cmath> #define int long long using namespace std; signed main()//因为用了define { int n,c,sum=0; cin>>n>>c;//输入 int a[n]; for(int i=0;i<n;i++) { cin>>a[i];//输入 } sort(a,a+n);//排序 for(int i=0;i<n;i++) { sum+=(upper_bound(a,a+n,a[i]+c)-lower_bound(a,a+n,a[i]+c));//n个相同的配对 } cout<<sum;//输出 return 0;//完结散花 }
-
2
本人首次第一个AC
好多人92分的,其实没那么复杂
cnt开longlong就AC了👍
#include <bits/stdc++.h> using namespace std; int n,c,a[200001]; int main() { cin >> n >> c; for (int i=0;i<n;i++){ cin >> a[i]; } sort (a,a+n); long long cnt=0; for (int i=0;i<n;i++){ int q=a[i]+c; if(binary_search(a+i,a+n,q)){ cnt+=(upper_bound(a, a+n,q)-lower_bound(a, a+n,q)); } } cout<< cnt; return 0; }
-
0
#include<bits/stdc++.h> using namespace std; int a[200001]; int main(){ int n; cin>>n; long long k; cin>>k; long long s=0; for(int i=0;i<n;i++){ cin>>a[i]; } sort(a,a+n); for(int i=0;i<n;i++){ int *p=lower_bound(a,a+n,a[i]+k); int *q=upper_bound(a,a+n,a[i]+k); s+=q-p; } cout<<s; }
- 1
Information
- ID
- 996
- Time
- 1000ms
- Memory
- 125MiB
- Difficulty
- 8
- Tags
- # Submissions
- 132
- Accepted
- 23
- Uploaded By