比赛 “Asm.Def战记之太平洋”杯 评测结果 AAAAAAATTT
题目名称 Asm.Def的一秒 最终得分 70
用户昵称 asddddd 运行时间 3.637 s
代码语言 C++ 内存使用 0.33 MiB
提交时间 2015-11-02 10:38:21
显示代码纯文本
//
//  main.cpp
//  asm_second
//
//  Created by Qing Liu on 15/11/2.
//  Copyright © 2015年 Qing Liu. All rights reserved.
//

#include <iostream>
#include <cstdio>
#include <vector>
#define maxn 110000
using namespace std;
bool used[maxn];
struct point{
    int x,y,maxx;
};
vector<point>asd;
int a,b,c,d;
bool judge(int ta,int tb){
    int x1=asd[tb].x-asd[ta].x,y1=asd[tb].y-asd[ta].y;
    int tta=x1*c-y1*d;
    int ttb=x1*a-y1*b;
    if (tta>0&&ttb<0) {
        return 1;
    }
    return 0;
}
int DFS(int id){
    if (asd[id].maxx!=-1) {
        return asd[id].maxx;
    }
    used[id]=1;
    int maxxx=0;
    for (int i=0 ; i<asd.size(); i++) {
        if (!used[i]) {
            if (judge(id,i)) {
                maxxx=max(DFS(i),maxxx);
            }
        }
    }
    used[id]=0;
    return asd[id].maxx=maxxx+1;
}
int main() {
    freopen("asm_second.in", "r", stdin);
    freopen("asm_second.out", "w", stdout);
    int n;
    cin>>n;
    cin>>a>>b>>c>>d;
    asd.push_back((point){0,0,-1});
    for (int i=0; i<n; i++) {
        int x,y;
        cin>>x>>y;
        point assd=(point){
            x,y,-1
        };
        asd.push_back(assd);
    }
    DFS(0);
    cout<<asd[0].maxx-1;
    return 0;
}