社区讨论
RE求调
P1102A-B 数对参与者 2已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @mhj9u0ib
- 此快照首次捕获于
- 2025/11/03 23:04 4 个月前
- 此快照最后确认于
- 2025/11/03 23:04 4 个月前
C
#include <stdio.h>
#include <stdlib.h>
#define MAX_VAL 2000000 // 足够大的范围
int main() {
int N, C;
scanf("%d %d", &N, &C);
int* count = (int*)calloc(MAX_VAL, sizeof(int));
int* numbers = (int*)malloc(N * sizeof(int));
// 读取数字并计数
int min_val = MAX_VAL, max_val = 0;
for (int i = 0; i < N; i++) {
scanf("%d", &numbers[i]);
count[numbers[i]]++;
if (numbers[i] < min_val) min_val = numbers[i];
if (numbers[i] > max_val) max_val = numbers[i];
}
long long result = 0;
// 统计满足 A - B = C 的数对
for (int i = 0; i < N; i++) {
int A = numbers[i];
int B = A - C;
if (B >= min_val && B <= max_val) {
result += count[B];
}
}
printf("%lld\n", result);
free(count);
free(numbers);
return 0;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...