题目大意:给你两个个数据s, n,下面输入n组数据代表牛的距离,如果两头牛的之间距离和小于等于s 就算是一对, 求一共有多少对?
策略:直接遍历,肯定TL, 先用一个数组保存比s小的,快排一下,最后搜索一下。
?
代码:
?
#include
#include
#include
using namespace std; int s[1000005]; int main() { int n, m, i, j; while(scanf(%d%d, &n, &m) == 2){ int a, k = 0; for(i = 0; i < n; i ++){ scanf(%d, &a); if(a < m) s[k++] = a; } int ans = 0; int flag = 0; sort(s, s+k); for(i = 0; i < k; i ++){ for(j = i+1; j< k; j ++){ if(s[i]+s[j] <= m){ ++ans; } else{ break; } } } printf(%d , ans); } return 0; }
?