Czy找到寶藏得到屠龍寶刀和神祕祕籍!如今他要去找常常ntr他的Jmars報仇……node
Czy學會了一招「墮天一擊」,他對一個地點發動墮天一擊,地面上就會留下一個很大的圓坑。圓坑的周圍一圈能量太過龐大,所以沒法經過。因此每次czy發動技能都會把地面分割。Jmars擁有好大好大的土地,幾十眼都望不到頭,因此能夠假設土地的大小是無限大。如今czy對他發動了猛烈的攻擊,他想知道在澤宇攻擊以後他的土地被切成幾份了?ios
Czy畢竟很虛,所以圓心都在x座標軸上。另外,保證全部圓兩兩之間不會相交。spa
輸入第一行爲整數n,表示czy放了n次墮天一擊。code
接下來n行,每行兩個整數x[i],r[i]。表示在座標(x[i] , 0)放了一次墮天一擊,半徑爲r[i]。內存
輸出一行,表示地面被分割成幾塊。get
47 5-9 1111 90 20
6
#include<cstdio> #include<cstring> #include<cstdlib> #include<iostream> #define N 300000 #include<algorithm> using namespace std; int n,ans=0,cnt,p; int read() { int sum=0,f=1;char x=getchar(); while(x<'0'||x>'9'){if(x=='-')f=-1;x=getchar();} while(x>='0'&&x<='9')sum=sum*10+x-'0',x=getchar(); return sum*f; } struct node { int l,r,h; } a[N+5]; int cmp(const node a,const node b) { if(a.l==b.l) return a.r>b.r; return a.l<b.l; } void check(int x) { int k=a[x].l; for(int i=x+1;i<=n;i++) { if(a[i].l==k) k=a[i].r; else return; if(k==a[x].r) { ans++; return; } if(a[i].l>=a[x].r)return; } } int main() { //freopen("god.in","r",stdin); //freopen("god.out","w",stdout); n=read(); int x,r;ans=n+1; for(int i=1;i<=n;i++) { x=read();r=read(); a[i].l=x-r,a[i].r=x+r;a[i].h=x; if(!cnt)cnt=x; if(cnt!=x){ p=1; } } if(!p) { printf("%d",n+1); exit(0); } sort(a+1,a+n+1,cmp); //for(int i=1;i<=n;i++)cout<<a[i].l<<" "<<a[i].r<<endl; for(int i=1;i<=n;i++) { check(i); } printf("%d",ans); }