hint

±Ý±¤ ¹®Á¦´Â °¡ÁßÄ¡¸¦ °¡Áö´Â Á¤Á¡µéÀÌ Æò¸é»ó¿¡ ÁÖ¾îÁ³À» ¶§ ÀÓÀÇÀÇ Á÷»ç°¢ÇüÀ» Á¤ÇÏ¿© ±× ¾È¿¡ ¼ÓÇÑ Á¡µéÀÇ °¡ÁßÄ¡¸¦ ÃÖ´ëÈ­ÇÏ´Â ¹®Á¦ÀÌ´Ù. ´ä¿¡ ÇØ´çÇÏ´Â Á÷»ç°¢Çü RÀ» ÃÖ¼ÒÈ­ÇÏ¸é °¢ º¯¿¡´Â Àû¾îµµ ÇϳªÀÇ Á¡ÀÌ À§Ä¡ÇÏ°Ô µÈ´Ù. Áï, ´äÀÌ µÇ´Â ÃÖ¼Ò Á÷»ç°¢ÇüÀÇ ³× º¯Àº ±¤ »êÀÇ À§Ä¡·Î ÁÖ¾îÁö´Â x,yÁÂÇ¥¸¦ ÀÌ¿ëÇØ ±¸¼ºÇÒ ¼ö ÀÖ´Ù.

ÀÔ·ÂµÈ ±¤»ê À§Ä¡ÀÇ xÁÂÇ¥ (N°³)¿Í yÁÂÇ¥ (N°³)¸¦ Á¶ÇÕÇÏ¸é ´äÀÌ µÇ´Â Á÷»ç°¢ÇüÀÇ ²ÀÁöÁ¡ È常¦ N¡¿N °³ ¸¸µé ¼ö ÀÖ´Ù. ÀÌ ²ÀÁöÁ¡ Èĺ¸ Áß µÎ Á¡À» ²ÀÁöÁ¡(¿ÞÂÊ À§ ²ÀÁöÁ¡-¿À¸¥ÂÊ ¾Æ·¡ ²ÀÁöÁ¡)À¸·Î »Ì¾Æ Á÷»ç°¢ÇüÀ» ±¸¼ºÇϸé O(N^4)°³ÀÇ Á÷»ç°¢Çü È帰¡ ³ª¿Â´Ù. °¢ Á÷»ç°¢Çü Èĺ¸ (X1,Y1) - (X2-Y2)¿¡ ¼ÓÇÏ´Â Á¤Á¡ÀÇ °¡ÁßÄ¡ ÇÕÀ» ±¸ÇÏ¿© ´äÀ» ãÀ» ¼ö ÀÖ´Ù. (0,0) - (X,Y) Á÷»ç°¢Çü ¼Ó Á¡µéÀÇ °¡ÁßÄ¡ ÇÕ Sx,yɹ¸¦ O(N^2)¿¡ ¹Ì¸® °è»êÇØ ³õÀ¸¸é, Á÷»ç°¢Çü (X1,Y1) - (X2,Y2)¿¡ ¼ÓÇÏ´Â Á¤Á¡ÀÇ °¡ÁßÄ¡ ÇÕÀº Sx2,y2 - Sx1-1,y2 - Sx2,y1-1 + Sx1-1,y1-1 °¡ µÇ¹Ç·Î O(1) ¿¡ ¾Ë ¼ö ÀÖ´Ù. ºÎºÐ¹®Á¦ 1ÀÇ °æ¿ì ÀÌ ¹æ¹ýÀ¸·Î O(N^4)¿¡ ÇØ°á °¡´ÉÇÏ´Ù.

À§ÀÇ ¹æ¹ý¿¡ ÃÖ´ë ¿¬¼Ó ºÎºÐÇÕÀ» Àû¿ëÇÏ¿© O(N^3)À¸·Î °³¼±ÇÒ ¼ö ÀÖ´Ù. ¿ì¼± Á¤Á¡µéÀ» X ÃàÀ» ±âÁØÀ¸·Î Á¤·ÄÇÏ°í, Á÷»ç°¢ÇüÀÇ À§, ¾Æ·¡ º¯ÀÌ µÇ´Â Ãà 2°³¸¦ ¼±ÅÃÇÑ´Ù. ±× ¼Ó¿¡ ÀÖ´Â Á¤Á¡µéÀ» X Ãà ±âÁØÀ¸·Î Á¤·ÄÇÑ ¼ø¼­´ë·Î ÃÖ´ë ¿¬¼Ó ºÎºÐÇÕÀ» °è»êÇϸé O(N)¿¡ ÁÖ¾îÁø À§, ¾Æ·¡ º¯¿¡ ´ëÇØ Á¤Á¡ÀÇ °¡ÁßÄ¡ ÇÕÀÌ ÃÖ´ë°¡ µÇ´Â Á÷»ç°¢ÇüÀÇ ¾ç ¿· º¯À» ±¸ÇÒ ¼ö ÀÖ´Ù. ÀÌ ¹æ¹ýÀ» ÅëÇØ ºÎºÐ¹®Á¦ 2¸¦ O(N^3)À¸·Î ÇØ°á °¡´ÉÇÏ´Ù.

ºÎºÐ¹®Á¦ 3ÀÇ °æ¿ì, ´äÀº À½¼öÀÎ Á¡ p¸¦ Æ÷ÇÔÇϰųª Æ÷ÇÔÇÏÁö ¾Ê´Â °æ¿ì·Î ³ª´©¾îÁø´Ù. Á¡ p°¡ ´ä¿¡ Æ÷Ç﵃ °æ¿ì, ´Ù¸¥ Á¡µéÀº ¸ðµÎ ¾ç¼öÀ̹ǷΠ¸ðµç Á¡ÀÇ °¡ÁßÄ¡ÀÇ ÇÕÀ» ´õÇÑ °ÍÀÌ ´äÀÌ µÈ´Ù. p°¡ ´ä¿¡ Æ÷ÇÔµÇÁö ¾Ê´Â °æ¿ì¿¡´Â p¸¦ ±âÁØÀ¸·Î 4ºÐ¸éÀ» ³ª´« ÈÄ, ´ë°¢¼± ¹æÇâÀ¸·Î ¸¶ÁÖº¸Áö ¾Ê´Â, ÀÌ¿ôÇÑ µÎ »çºÐ¸éÀÇ ÇÕ Áß ÃÖ´ñ°ªÀÌ ´äÀÌ µÈ´Ù.

ºÎºÐ¹®Á¦ 4ÀÇ °æ¿ì, ÀÏÂ÷¿ø Á÷¼±»ó¿¡¼­ ÃÖ´ë ¿¬¼Ó ºÎºÐÇÕÀ» ±¸ÇÏ¸é ¸ÂÈú ¼ö ÀÖ´Ù. xÃà ¹æÇâ À¸·Î Á¤·ÄÇÑ ÈÄ, Â÷·Ê´ë·Î °¡ÁßÄ¡ÀÇ ÇÕÀ» ´©ÀûÇÏ´Ù°¡ À½¼ö°¡ µÇ¸é 0À¸·Î ÃʱâÈ­ÇÑ ÈÄ ÁøÇà ÇÏ¸é µÈ´Ù. ½Ã°£º¹Àâµµ´Â O(N log N)ÀÌ´Ù.

ºÎºÐ¹®Á¦ 2ÀÇ O(N^3) ¹æ¹ýÀ» °³¼±Çϸé O(N^2 log N)¿¡ ´äÀ» ±¸ÇÒ ¼ö ÀÖ´Ù. °íÁ¤µÈ À­º¯ Yi¿¡ ´ëÇØ ¾Æ·§º¯ Y2¸¦ ´Ã·Á°¡¸é¼­ Binary Indexed Tree³ª Segment Tree¸¦ ÀÌ¿ëÇÏ¿©, Æ®¸®¸¦ ±¸¼ºÇÏ´Â °¢ ±¸°£ [X1,X2]ÀÇ °¡Àå ¿ÞÂÊ¿¡¼­ ½ÃÀÛÇÏ´Â ÃÖ´ë ¿¬¼Ó ºÎºÐÇÕ(LSUM), °¡Àå ¿À¸¥ ÂÊ¿¡¼­ ½ÃÀÛÇÏ´Â ÃÖ´ë ¿¬¼Ó ºÎºÐÇÕ(RSUM), Àüü ±¸°£ÀÇ ÃÖ´ë ¿¬¼Ó ºÎºÐÇÕ (MAXSUM), ±¸°£¿¡ ¼ÓÇÑ ¸ðµç ³ëµåµéÀÇ ÇÕ(SUM)À» µ¿½Ã¿¡ °»½ÅÇÑ´Ù.

±¸°£AÀÇ ¿ÞÂÊ ÀÚ½Ä ±¸°£À» L , ¿À¸¥ÂÊ ÀÚ½Ä ±¸°£À» RÀ̶ó Çϸé, ±¸°£ AÀÇ °ªÀº ±¸°£ L °ú RÀÇ °ªÀ» ÀÌ¿ëÇØ ¾Æ·¡¿Í °°ÀÌ °è»êÇÒ ¼ö ÀÖ´Ù.

A.SUM = L.SUM + R.SUM
A.LSUM = max(L.LSUM , L.SUM + r.LSUM)
A.RSUM = max(R.RSUM , R.SUM + L.RSUM)
A.MAXSUM = max( L.RSUM + R.LSUM , L.MAXSUM,R.MAXSUM,A.SUM)
Æ®¸®ÀÇ µ¥ÀÌÅÍ °»½Å¿¡´Â O(log N)ÀÌ ÇÊ¿äÇϸç Á÷»ç°¢Çü (0,Y1) - (10^9 , Y2) ¼Ó¿¡ ÀÖ´Â ÃÖ´ë ¿¬¼Ó ºÎºÐÇÕ (ÃÖ´ë °¡ÁßÄ¡ ÇÕÀ» °¡Áö´Â Á÷»ç°¢Çü)Àº Æ®¸®ÀÇ µ¥ÀÌÅÍ °»½Å ÈÄ ·çÆ® ³ëµåÀÇ MAXSUMÉ­°ªÀÌ µÈ´Ù. ÀÌ ¹æ¹ýÀ» ÅëÇØ O(N^2 log N)¿¡ ¹®Á¦ÀÇ ´äÀ» ±¸ÇÒ ¼ö ÀÖ´Ù.

[ȨÀ¸·Î]  [µÚ ·Î]