1 条题解
-
0
#include <bits/stdc++.h> using namespace std; const int N = 1e6 + 5; using ll = long long; int n, c, a[N]; ll ans; void solve1(){ // 75+ for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) if(i!=j && a[i] - a[j] == c) ans ++; } int st[N]; void solve2(){ // [0, 90] for(int i=1; i<=n; i++) st[ a[i] ] ++; // a[i] 出现个数 for(int i=1; i<=n; i++) ans += st[ a[i] - c ]; } map<int,int> mp; // map<x,y> ---- f(x) = y void solve3(){ // 100 for(int i=1; i<=n; i++) mp[ a[i] ] ++; // a[i] 出现个数 for(int i=1; i<=n; i++) ans += mp[ a[i] - c ]; } void solve4(){ // 100 sort(a+1, a+1+n); // 需要排序 for(int i=1; i<=n; i++){ int x = a[i] - c; int l = lower_bound(a+1, a+1+n, x) -a; int r = upper_bound(a+1, a+1+n, x) -a; ans += r-l; } } int main() { // freopen("1.in", "r", stdin); cin >> n >> c; for (int i = 1; i <= n; i++) { cin >> a[i]; } solve4(); cout<<ans; }
- 1
信息
- ID
- 312
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 53
- 已通过
- 8
- 上传者