http://codeforces.com/contest/617/problem/D
题意:给3个点,让你用折线连起来,要求线与坐标轴平行,且线不能碰到自身
三种情况:
1、三点共线
2、如果2点共线,第三点夹在中间则2步,否则三步
3.其余情况三步
#include <cstdio> #include <cmath> #include <cstring> #include <string> #include <algorithm> #include <queue> #include <map> #include <set> #include <stack> #include <iostream> using namespace std; double eps=0.000001; __int64 tm[105]; int main() { __int64 x1,x2,x3,y1,y2,y3; scanf("%I64d%I64d",&x1,&y1); scanf("%I64d%I64d",&x2,&y2); scanf("%I64d%I64d",&x3,&y3); if ((x1==x2&&x2==x3)||(y1==y2&&y2==y3)) { printf("1\n");return 0; } if (x1==x2||x1==x3||x2==x3||y1==y2||y1==y3||y2==y3) { if (x1==x2&&((y3>y1&&y2>y3)||(y3<y1&&y2<y3))) printf("3\n"); else if (x1==x3&&((y3>y2&&y2>y1)||(y3<y2&&y2<y1))) printf("3\n"); else if (x2==x3&&((y3>y1&&y1>y2)||(y3<y1&&y1<y2))) printf("3\n"); else if (y1==y2&&((x1>x3&&x3>x2)||(x2>x3&&x3>x1))) printf("3\n"); else if (y3==y2&&((x3>x1&&x1>x2)||(x2>x1&&x1>x3))) printf("3\n"); else if (y1==y3&&((x1>x2&&x2>x3)||(x3>x2&&x2>x1))) printf("3\n"); else printf("2\n"); return 0; } printf("3\n"); return 0; }