社区讨论

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 条回复,欢迎继续交流。

正在加载回复...