p1565.cpp
来自「高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程」· C++ 代码 · 共 65 行
CPP
65 行
// p1565.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
bool Joint , Outside , Cover;
int S , N , M , Tot;
int Minx [100] , Miny [100] , Maxx [100] , Maxy [100];
void init ()
{
scanf ( "%d%d%d" , &N , &M , &Tot );
for ( int i = 0; i < Tot; i ++ ) scanf ( "%d%d%d%d" , &Minx [i] , &Miny [i] , &Maxx [i] , &Maxy [i] );
}
bool range ( int p )
{
return Minx [p] >= 0 && Miny [p] >= 0 && Minx [p] <= N && Miny [p] <= M
&& Maxx [p] >= 0 && Maxy [p] >= 0 && Maxx [p] <= N && Maxy [p] <= M;
}
bool interrupt ( int p , int q )
{
return ! ( Minx [p] >= Maxx [q] || Miny [p] >= Maxy [q] || Minx [q] >= Maxx [p] || Miny [q] >= Maxy [p] );
}
int area ( int p )
{
return ( Maxx [p] - Minx [p] ) * ( Maxy [p] - Miny [p] );
}
void check ()
{
int i , j;
Joint = Outside = false; Cover = true;
S = 0;
for ( i = 0; i < Tot; i ++ ) {
S += area ( i );
if ( ! range ( i )) Outside = true;
for ( j = i + 1; j < Tot; j ++ )
if ( interrupt ( i , j ) ) { Joint = true; return; }
}
if ( S != N * M ) Cover = false;
}
void print ()
{
if ( Joint ) { printf ( "NONDISJOINT\n" ); return; }
if ( Outside ) { printf ( "NONCONTAINED\n" ); return; }
if ( !Cover ) { printf ( "NONCOVERING\n" ); return; }
printf ( "OK\n" );
}
int main(int argc, char* argv[])
{
int total;
for ( scanf ( "%d" , &total ); total; total -- ) {
init ();
check ();
print ();
}
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?