#include <stdio.h>
int main()
{
int N, S, T;
while(~scanf("%d%d%d", &N, &S, &T))
{
if((S == T) && (N > 1)) printf("-1\n");
else if(((S == 1) || (S == N)) && ((T == N) || (T == 1))) printf("0\n");
else if(((S == 1) || (S == N)) || ((S+1 == T) || (S-1 == T))) printf("1\n");
else printf("2\n");
}
return 0;
int main()
{
int N, S, T;
while(~scanf("%d%d%d", &N, &S, &T))
{
if((S == T) && (N > 1)) printf("-1\n");
else if(((S == 1) || (S == N)) && ((T == N) || (T == 1))) printf("0\n");
else if(((S == 1) || (S == N)) || ((S+1 == T) || (S-1 == T))) printf("1\n");
else printf("2\n");
}
return 0;
}
心得:这道题被折磨了老半天,WA了无数次,本来一直以为第三个判断有错,死活找不出来,结果居然是第一个T_T。。。我就想问了,题目中1≤N≤10000,我的条件(S == T) || (N == 1)有错吗,和(S == T) && (N > 1)有什么区别吗,出题人自带的bug吗。。。本来一道水题被搞的欲仙欲死的,我去吃坨屎冷静下。。。