#include <bits/stdc++.h> using namespace std; struct Node{ int l; int r; }; int cmp(Node A,Node B){ return (A.r - A.l) < (B.r - B.l); } Node a[300005]; int main(){ int n,x,R; int ans = 0; map<int,int> M; scanf("%d",&n); for(int i = 1;i <= n;i ++){ scanf("%d%d",&x,&R); a[i].r = x + R; a[i].l = x - R; } sort(a + 1,a + n + 1,cmp); int tl,tr; for(int i = 1;i <= n;i ++){ tl = a[i].l; tr = a[i].r; if(!M[a[i].l] && !M[a[i].r]){ M[a[i].l] = M[a[i].r] = i; continue; } if(M[tl] && M[tr]){ if(M[tl] == M[tr]){ans++;} else{ int t = M[tr]; M[a[t].r] = M[tl]; a[M[tl]].r = a[t].r; } continue; } if(M[a[i].l]) { M[tr] = M[tl]; a[M[tr]].r = tr; } else { M[tl] = M[tr]; a[M[tr]].l = tl; } } printf("%d\n",ans + n + 1); return 0; }
UPC小奇画画(sort+map)
猜你喜欢
转载自www.cnblogs.com/love-fromAtoZ/p/9381207.html
今日推荐
周排行