比赛 “Asm.Def战记之太平洋”杯 评测结果 AAAAAAATTT
题目名称 Asm.Def的一秒 最终得分 70
用户昵称 debug 运行时间 3.207 s
代码语言 C++ 内存使用 3.25 MiB
提交时间 2015-11-02 11:54:15
显示代码纯文本
#include<cstdio>
#include<algorithm>
using namespace std;
int n;
double a,b,c,d;
int top=0;
struct ff
{
	int x,y;
}f[111111]={};
int sum[111111]={};
struct gg
{
	double x,y;
}g[111111]={};
bool cmpp(gg m,gg n)
{
	return m.x<n.x;
}
int main()
{
	freopen("asm_second.in","r",stdin);
	freopen("asm_second.out","w",stdout);
	scanf("%d%lf%lf%lf%lf",&n,&a,&b,&c,&d);
	a=a/b;
	c=c/d;//此时a<c,a和c为斜率
	for(int i=0;i<n;i++)
		scanf("%d%d",&f[i].x,&f[i].y);
	for(int i=0;i<n;i++)
		if((1.0*f[i].y/f[i].x>a+0.0000000001)&&(1.0*f[i].y/f[i].x<c-0.0000000001))
			g[++top].x=1.0*f[i].x,g[top].y=1.0*f[i].y;
	sort(g+1,g+top+1,cmpp);
	for(int i=1;i<=top;i++)
		sum[i]=1;
	for(int i=2;i<=top;i++)
		for(int j=1;j<i;j++)
			if((g[i].y-g[j].y)/(g[i].x-g[j].x)>a&&(g[i].y-g[j].y)/(g[i].x-g[j].x)<c)
				sum[i]=max(sum[i],sum[j]+1);
	int ans=0;
	for(int i=1;i<=top;i++)
		if(ans<sum[i])
			ans=sum[i];
	printf("%d\n",ans);
	return 0;
}