2 条题解
-
2
#include <cstdio> #include <algorithm> using namespace std; int arr[500005]; long long ans; int main() { int n, k, i; scanf("%d%d", &n, &k); for (i = 0; i < n; i++) scanf("%d", &arr[i]); sort(arr, arr + n); for (i = 0; i < n - 1; i++) ans += n - (lower_bound(arr + i + 1, arr + n, arr[i] + k) - arr); printf("%lld", ans); return 0; }
不要去学那个拉胯榜二,二分才是正解
-
0
#include<iostream> #include<algorithm> using namespace std; int main(){ int n,m,a[1000001]; cin>>n>>m; for (int i=0;i<n;i++) cin>>a[i]; sort(a,a+n); long long cnt=0; int nowmax=0; for (int i=0;i<n-1;i++){ if (a[n-1]-a[i]<m){break;} for (int j=nowmax;j<n;j++){ if (a[j]-a[i]>=m){ cnt+=n-j; nowmax=j; break; } } } cout<<cnt; return 0; }
- 1
信息
- ID
- 381
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 57
- 已通过
- 6
- 上传者