⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 4616708_ce.cpp

📁 部分PKU上的源码
💻 CPP
字号:
#include<iostream>
#include<algorithm>
#include<math.h>
#include<vector>
#include<iterator>
using namespace std;
struct point
{
	int x;
	int y;
};
vector<point> island;
point input;
int d;
int n;
int result;
bool ok;
void minsert(point a)
{
	for(vector<point>::iterator count=island.begin();count!=island.end();count++)
	{
		if(a.x==(*count).x)
		{
			(*count).y=(*count).y>a.y?(*count).y:a.y;
			return;
		}
		else if(a.x<(*count).x) {island.insert(count,a);return;}
	}
	island.push_back(a);
}
void checkout()
{
	for(int count=0;count<island.size();count++)
	{
		cout<<island[count].x<<" "<<island[count].y<<endl;
	}
}
void slove(int start)
{
	result++;
	double dis=(double)d;
	double xx,yy;
	double radar=sqrt(dis*dis-(double)island[start].y*island[start].y)
		            +(double)island[start].x;
	for(int count=start+1;count<island.size();count++)
	{
		xx=(double)island[count].x;
		yy=(double)island[count].y;
		if(dis*dis<yy*yy+(radar-xx)*(radar-xx)) break;
		else continue;
	}
	if(count==island.size()) return;
	else slove(count);
}
int main()
{
	int testnumber=0;
	while(cin>>n>>d)
	{
		testnumber++;
		island.clear();
		result=0;
		ok=true;
		if(n==0) return 0;
		int count;
		for(count=0;count<n;count++)
		{
			cin>>input.x>>input.y;
			input.y=abs(input.y);
			if(input.y>d) {ok=false;break;}
			minsert(input);
		}
		if(ok==false) cout<<"Case "<<testnumber<<": "<<-1<<endl;
		else
		{
			slove(0);
			cout<<"Case "<<testnumber<<": "<<result<<endl;
		}
		getchar();
		//checkout();
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -