题解
2024-06-28 18:08:39
发布于:广东
21阅读
0回复
0点赞
用map储存,再遍历时,加上的数量即可
注意,没说先后顺序,不用除2
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <map>
using namespace std;
map <int, int> mp;
int a[200005];
long long ct;
int read(){
char c = getchar();
int x = 0;
while(!isdigit(c)) c = getchar();
while(isdigit(c)){
x = (x << 3) + (x << 1) + c - '0';
c = getchar();
}return x;
}
int main(){
int n = read(), m = read();
long long ct = 0;
for(int i = 1; i <= n; i++){
a[i] = read();
mp[a[i]]++;//记录
}for(int i = 1; i <= n; i++){
if(a[i] >= m) ct += mp[a[i] - m];//加上
}
cout << ct;
return 0;
}
查询时间复杂度:
时间复杂度:
这里空空如也
有帮助,赞一个