1 条题解
-
0
C++ :
#include <cstdio> #include <algorithm> using namespace std; /* 圆 i、j 相离 <-> 区间 [P-R, P+R] 互不重叠 <-> 右端点 < 左端点。 按右端点排序,对每个圆二分数出「右端点 < 自己左端点」的个数。 */ static long long L[50005], Rr[50005], sr[50005]; int main(){ int n; if(scanf("%d",&n)!=1) return 0; for(int i=0;i<n;i++){ long long P,Rd; scanf("%lld %lld",&P,&Rd); L[i]=P-Rd; Rr[i]=P+Rd; } for(int i=0;i<n;i++) sr[i]=Rr[i]; sort(sr,sr+n); long long ans=0; for(int i=0;i<n;i++){ ans += (long long)(lower_bound(sr,sr+n,L[i]) - sr); } printf("%lld\n", ans); return 0; }
- 1
信息
- ID
- 2630
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者