小明從小就喜歡騎自行車,自行車環湖騎行大賽馬上開始了,小明當然也參加了。爲了能取得更好地成績,小明想知道在哪些地方需要格外的注意,以防掉湖。
現在已知該湖爲n邊形且形狀均由直線和直角組成(可以參照樣例解釋),小明從起始點沿着環湖路線順時針騎到終點,求小明可能由於忘記拐彎而導致掉湖的次數。
Input
第一行一個整數n(4<=n<=1000)
下面n+1行每行包含兩個數,爲每個直角處的座標,第一個點爲起始點,相鄰兩行的座標構成一條直線,即環湖路線,最後一個點與第一個點重合即終止點。
Output
一個整數。(可能由於忘記拐彎而掉進湖的次數)
Examples
輸入
6 0 0 0 1 1 1 1 2 2 2 2 0 0 0
輸出
1
輸入
16 1 1 1 5 3 5 3 7 2 7 2 9 6 9 6 7 5 7 5 3 4 3 4 4 3 4 3 2 5 2 5 1 1 1
輸出
6
Note
第一個實例如下:
小明在(1,1)處可能由於忘記拐彎而掉進湖中,答案爲1
本題行走爲順時針,兩條線之間爲直角,可以發現只有當自行車向左走時,纔有掉進湖中的可能。
代碼如下:
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int f;
int main(){
int n,a,b,c,d;
scanf("%d",&n);
scanf("%d %d %d %d",&a,&b,&c,&d);
if(a>c)f=4;
if(a<c)f=2;
if(b<d)f=1;
if(b>d)f=3;
n--;
a=c;b=d;
int ans=0;
while(n--){
scanf("%d %d",&c,&d);
if(f==1){
if(a>c){
f=4;ans++;
}else f=2;
}else if(f==2){
if(b<d){
f=1;ans++;
}else f=3;
}else if(f==3){
if(a<c){
f=2;ans++;
}else f=4;
}else{
if(b>d){
f=3,ans++;
}else f=1;
}
a=c;b=d;
}
printf("%d\n",ans);
return 0;
}