second best 题解
2025-06-30 17:32:10
发布于:浙江
17阅读
0回复
0点赞
#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b) {
return (*(int *)a - *(int *)b);
}
int main() {
int n, m;
scanf("%d", &n);
int *arr = (int *)malloc(n * sizeof(int));
if (arr == NULL) {
printf("内存分配失败\n");
return 1;
}for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
scanf("%d", &m);
qsort(arr, n, sizeof(int), compare);
int left = 0, right = n - 1;
int found = 0;
while (left < right) {
int sum = arr[left] + arr[right];
if (sum == m) {
printf("%d %d\n", arr[left], arr[right]);
found = 1;
break;
} else if (sum < m) {
left++;
} else {
right--;
}
}
if (!found) {
printf("No\n");
}free(arr);
return 0;
}
这里空空如也
有帮助,赞一个