データ範囲は、検索を考慮すると、非常に小さいです。
私の最初の考えは、矩形、入力が与えられなければならない、明らかに各矩形指定点を列挙することです。
しかし、間違っているだけでなく、困難ではないだけの複雑さは、泥棒を書き込みます。
点矩形を挙げることができる矩形を含む点を列挙することはできない穏やかな分析は、属します。
各点(N-複雑Oように4例がある。4)、一定のチェックがあり、それはプローブ狂っTLEの縁に言うことができるが。
実際には、状況にそれほど不満はいくつかの剪定を追加し、実行することです、渡すことができます。
1の#include <iostreamの> 2の#include <cstdioを> 3の#include < ストリング > 4の#include <CStringの> 5の#include <cstdlib> 6 使って 名前空間STD。 7 8インラインint型リード(){ 9 INT X = 0。チャー CH = GETCHAR()。 10 一方(CH < ' 0 ' || CH> ' 9 ')CH = GETCHAR()。 11 一方(CH> = ' 0 '&& CH <= ' 9 ' ){ 12 、X = X * 10 + CH- ' 0 ' ; CH = GETCHAR()。 13 } 14 リターンX。 15 } 16 17 のconst int型の N = 55 。 18 19 構造体POI { 20 のint X、Y。 21 } P [N]。 22 23 構造体MTRX { 24 のint L、R、U、D。 25 ブールFL; 26 } M [ 5 ]。 27 28 29 int型N、K。 30 31 INT ANS = 1E9 + 7 。 32 33のインラインブール(INS int型、int型のx、int型のY){ 34 場合は(X <= M [A] .R && X> = M [A] .L && Y <= M [A] .U && Y> = M [A] .D)を返す 真。 35 リターン はfalse ; 36 } // 判断(x、y)の是否在矩形中 37 38インラインブールチェック(INT A、INT B){ 39 であれば(INS(、mは[B] .L、M [B] .U))返す 真; 40 であれば(INS(M [B] .L、Mは、[B] .D))を返す 真。 41 であれば(INS(M [B]・R、M [B] .U))を返す 真。 42 であれば(INS(M [B] .R、mは[B] .D))を返す 真。 43 リターン はfalse ; 44 } // 判断A、B矩形是否相交 45の 46インラインボイド DFS(INT 今){ 47 のintヴァル= 0 。 48 のためには、(int型 i = 1 ; iが= Kを<; ++I){ 49 IF (m個の[I]の.Fl){ 50 のための(int型 Jは=私は+ 1、J <= K; ++ J){ 51が IF(M [J]の.Fl &&チェック(I、J))リターン。// 別の矩形と交差した場合 52である } 53れる } 54である ヴァル+ =(M [I] .rmの[I] .L)*(M [I] .u- ; M [I] 2.D) 55 } // 最初の電流波形に回答を求める 56はある IF(ヴァル> ANS)のリターン; 57である IF(N + ==今。1 ){ 58の ANS = ;分(ANS、ヴァル) 59 リターン; 60 } 61である ため(INT I = 1 ; Iは= K <; ++ I)の{ 62が MTRX SHEP = Mの[I]; // 状態復元する 63である IF(!は、{M [I]の.Fl) 64 Mを[I] .L = M [I] .R = P [今] .X; 65 M [I] .U = M [I] 2.D = P [今] .Y; 66 M [I] =の.Fl 。1 ; 67 (今+ DFS 1。); 68 M [I] = SHEP; 69 ブレーク; 70 } // ここで、矩形以外の空の長方形に、ので、確かに悪くないを破ります。 71 他{ 72 M [i]は.L = 分(M [i]が.L、P [今] .X)。 73 M [I] .R = MAX(M [I] .R、P [今] .X)。 74 M [i]は.D = 分(M [i]の.D、P [今] .Y)。 75 M [i]は.U = MAX(M [i]が.U、P [今] .Y)。 76の DFS(今+ 1 )。 77 M [I] = SHEP。 78 } 79 } 80 } 81 82 INT メイン(){ 83 N =読み取る(); K = 読み取ります()。 84 のための(int型 I = 1; iは= N <; ++ I){ 85 Pは、[i]は.X =読み取る(); P [i]が.Y = read()は、 86 } 87の DFS(1 )。 88 coutの<< ANS; 89 }