记录编号 384653 评测结果 AAAAAAAAAA
题目名称 [天梯赛PAT]长城 最终得分 100
用户昵称 Gravatarcstdio 是否通过 通过
代码语言 C++ 运行时间 0.424 s
提交时间 2017-03-18 21:04:30 内存使用 2.32 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
typedef long long LL;
const int SIZEN=100010;
class Point{
public:
	LL x,y;
	Point(LL _x=0,LL _y=0):x(_x),y(_y){}
	Point operator - (const Point &b){
		return Point(x-b.x,y-b.y);
	}
	friend LL crs (const Point &a,const Point &b){
		return a.x*b.y-a.y*b.x;
	}
};
int N;
Point P[SIZEN];
int F[SIZEN];
bool ftf[SIZEN];
void work(void){
	//scanf("%d",&N);
	//for(int i=1;i<=N;i++) scanf("%lld%lld",&P[i].x,&P[i].y);
	cin>>N;
	for(int i=1;i<=N;i++) cin>>P[i].x>>P[i].y;
	int ans=0,tp=0;
	F[tp++]=1;
	for(int i=2;i<=N;i++){
		while(tp>=2&&crs(P[i]-P[F[tp-2]],P[F[tp-1]]-P[F[tp-2]])>=0) tp--;
		ftf[F[tp-1]]=true;
		F[tp++]=i;
	}
	for(int i=2;i<N;i++) ans+=ftf[i];
	printf("%d\n",ans);
}
int main(){
	freopen("gfw.in","r",stdin);
	freopen("gfw.out","w",stdout);
	work();
	return 0;
}