1 条题解
-
0
#include<bits/stdc++.h> using namespace std; const int N=1e5+10; int a[N]; int findmax(int l, int r, int x) { if(x < a[l]) return 0; while(l + 1 < r) { int mid = (l + r) >> 1; if(a[mid] <= x) l = mid; else r = mid; } return l; } int main() { int n, K; scanf("%d%d", &n, &K); for(int i = 1; i <= n; i++) scanf("%d", &a[i]); a[++n] = 0; sort(a + 1, a + n + 1); long long ans = 0; for(int i = 2; i <= n; i++) { int p = findmax(1, i, K - a[i]); if(p == 0) break; ans += p; } printf("%lld\n", ans); return 0; }
- 1
信息
- ID
- 284
- 时间
- 100ms
- 内存
- 128MiB
- 难度
- 6
- 标签
- 递交数
- 370
- 已通过
- 100
- 上传者