文章
29
粉丝
165
获赞
53
访问
35.1k
根据满分篇的内容
C++加速还是不如scanf速度快
#include <stdio.h>
#include <stdlib.h>
#define MAX_N 2000000
#define MAX_VAL 4000001
#define OFFSET 2000000
int main() {
int n, x;
int *a = (int *)malloc(MAX_N * sizeof(int));
int *hash_table = (int *)calloc(MAX_VAL, sizeof(int));
int count = 0;
// 读取 n 和 x
scanf("%d %d", &n, &x);
// 读取 n 个整数并更新哈希表
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
hash_table[a[i] + OFFSET]++;
}
// 遍历数组,计算满足条件的有序对个数
for (int i = 0; i < n; i++) {
int target = a[i] - x + OFFSET;
if (target >= 0 && target < MAX_VAL) {
count += hash_table[target];
}
}
// 输出满足条件的有序对个数
printf("%d\n", count);
// 释放内存
free(a);
free(hash_table);
return 0;
}
登录后发布评论
暂无评论,来抢沙发