1 条题解
-
0
C :
#include <stdio.h> #include <stdlib.h> #define N 200000 int a[N]; int cmp( const void *a , const void *b ) { return *(int *)a - *(int *)b; /* 升序 */ } int find(int start, int end, int x) { int left, mid, right; left = start; right = end; while(left <= right) { mid = (left + right) / 2; if(a[mid] == x) { int count = 1, i; i = mid - 1; while(i >= start && a[i] == x) count++, i--; i = mid + 1; while(i <= end && a[i] == x) count++, i++; return count; } else if(a[mid] < x) left = mid + 1; else // if(a[mid] > x right = mid - 1; } return 0; } int main(void) { int n, c, i; scanf("%d%d", &n, &c); for(i=0; i<n; i++) scanf("%d", &a[i]); qsort(a, n, sizeof(int), cmp); int count = 0; for(i=0; i<n-1; i++) count += find(i + 1, n - 1, a[i] + c); printf("%d\n", count); return 0; }
C++ :
#include<bits/stdc++.h> using namespace std; int main() {int n,c,a[1000],t=0; cin>>n>>c; for(int i=0;i<n;i++) {cin>>a[i]; }for(int i=0;i<n;i++) { for(int j=0;j<n;j++) {if(a[i]-a[j]==c)t=t+1; } }cout<<t; return 0; }
- 1
信息
- ID
- 1823
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者