//********************************** //* * //* NOI 2004 * //* Day ? Problem ? * //* manhattan.cpp * //* By Wu Jingyue * //* * //********************************** #include #include using namespace std; ifstream fin("manhattan.in"); ofstream fout("manhattan.out"); const int maxm=10; const int maxn=100; const int maxk=100; const int maxs=maxk*2; struct TPair { int x1,y1,x2,y2; }; struct TSegment { int x,y,dir,len; }; TPair Pair[maxk]; int dirx[maxm]; int diry[maxn]; TSegment Segment[maxs]; int m,n,k,s; bool ans; void Input_Data() { int i; fin>>m>>n>>k; for (i=0; i>Pair[i].x1>>Pair[i].y1>>Pair[i].x2>>Pair[i].y2; Pair[i].x1--; Pair[i].y1--; Pair[i].x2--; Pair[i].y2--; } fin.close(); } int MIN(int a,int b) { if (ab) return a; else return b; } bool Check() { int i,j,p,x,y,dirs,curdir; bool OK,coincidex1,coincidex2; s=0; for (i=0; i=0; coincidex2=(Pair[i].y2-Pair[i].y1)*dirx[Pair[i].x2]>=0; if (Pair[i].x2-Pair[i].x1>0) dirs=1; else dirs=-1; if (coincidex1 && coincidex2) { if (Pair[i].x1!=Pair[i].x2) { Segment[s].x=MIN(Pair[i].y1,Pair[i].y2); Segment[s].y=MAX(Pair[i].y1,Pair[i].y2); Segment[s].dir=dirs; s++; } } else if (coincidex1 && !coincidex2) { Segment[s].x=Pair[i].y2; Segment[s].y=Pair[i].y2; Segment[s].dir=dirs; s++; } else if (!coincidex1 && coincidex2) { Segment[s].x=Pair[i].y1; Segment[s].y=Pair[i].y1; Segment[s].dir=dirs; s++; } else { OK=false; for (x=MIN(Pair[i].x1,Pair[i].x2)+1; x=0) { OK=true; break; } if (!OK) return false; Segment[s].x=Pair[i].y1; Segment[s].y=Pair[i].y1; Segment[s].dir=dirs; s++; Segment[s].x=Pair[i].y2; Segment[s].y=Pair[i].y2; Segment[s].dir=dirs; s++; } } for (i=0; i