题解
2024-06-28 18:08:39
发布于:广东
62阅读
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;
}
查询时间复杂度:
时间复杂度:
这里空空如也







有帮助,赞一个