ä»å¹ŽãäŒçµ±çãªè³åã«å ããŠãåè³è ã¯åããŠYandexã§ã€ã³ã¿ãŒã³ã·ãããåããæ©äŒããããŸãã 5æ22æ¥ã«ç»é²ã¯çµäºããäºéžã©ãŠã³ãã®ä»ã®åå è ã®ã¿ã«åŸãå¿ èŠããããŸãã äºéžã©ãŠã³ãã¯ä»å¹Ž5æ21æ¥ãã5æ22æ¥ãŸã§ã®2æ¥éç¶ããŸãã ã©ãŠã³ãã¯åã³TCM / Timeã·ã¹ãã ã䜿çšããŠè©äŸ¡ãããŸã ã ã¿ã¹ã¯ã®é£ããã«èå³ããã人ã®ããã«ãæšå¹Žã®è³æ Œã®ãã¢ãŒãæŽçããŸããã ãŸãããããå®è·µããæ©äŒããããŸãã
æŽæ°ïŒ Yandex.Algorithm 2016ã®äºéžã©ãŠã³ãã¯æ¢ã«éå§ãããŠãããå°æ¥çã«ééããªãåæããåé¡ã解決ããããã«æ¥ãŠããŸãã ç§ãã¡ã®æèŠã§ã¯ãã¿ã¹ã¯ã¯æšå¹Žã»ã©æªããããŸããã
A.ã¿ã€ããã¹
Michaelã¯æ®éã®ã€ã³ã¿ãŒããããŠãŒã¶ãŒã§ãã MichaelãYandexã䜿çšããŠã€ã³ã¿ãŒãããäžã§äœããæ€çŽ¢ãããšãæ€çŽ¢ã¯ãšãªã§ã¿ã€ããã¹ãèš±å¯ãããããšããããŸãã ãã¡ãããã»ãšãã©ã®å ŽåãYandexã¯MichaelãèããŠãããã®ãæšæž¬ãããªã¯ãšã¹ããä¿®æ£ã§ããŸãã ããšãã°ãMichaelããdeoxyribonucleicããå°å°ããŠæžããå ŽåïŒããã¯é©ãããšã§ã¯ãããŸããïŒãYandexã¯ãdeoxyribonucleicãã®ãªã¯ãšã¹ããä¿®æ£ããŸãã
ãã®ã¿ã¹ã¯ã§ã¯ããŠãŒã¶ãŒã®ãªã¯ãšã¹ãã®ã¿ã€ããã¹ãä¿®æ£ããããã°ã©ã ãäœæããå¿ èŠããããšèããã®ã§ãããã ããã¯ããã§ã¯ãããŸããããã®ã¿ã¹ã¯ã«å ããŠãããã«5ã€ã®ãšããµã€ãã£ã³ã°ãªã¿ã¹ã¯ãæäŸããã競äºã®çµãããŸã§ããŸãæéããããŸããã ãã€ã±ã«ã®æ¬¡ã®ãªã¯ãšã¹ãã«ã¿ã€ããã¹ãå«ãŸããŠãããã©ããã確èªããŠãã ããã
å ¥åããŒã¿
å ¥åãã¡ã€ã«ã®æåã®è¡ã«ã¯ãMichaelã®ãªã¯ãšã¹ããå«ãŸããŠããŸãã1ã5èªã§ãå°æåã®ã©ãã³æåã§æ§æãããåäžã®ã¹ããŒã¹ã§åºåãããŠããŸãã 2è¡ç®ã«ã¯æŽæ°NïŒ1â€Nâ€100ïŒãå«ãŸããŸãïŒYandexèŸæžã«å«ãŸããåèªã®æ°ïŒå¿é ããªãã§ãã ãããå®éã«ã¯YandexèŸæžã«å«ãŸããåèªã®æ°ã¯100以äžã§ãïŒã 3è¡ç®ã«ã¯ãèŸæžã®åèªãå«ãŸããŠããŸãã ååèªã¯ãå°æåã®ã©ãã³æåã§æ§æãããæååã§ãã åèªã¯åäžã®ã¹ããŒã¹ã§åºåãããŸãã ã¯ãšãªããã®åèªãšèŸæžããã®åèªã®äž¡æ¹ã20æåãè¶ ããªãããšãä¿èšŒãããŸãã
ã€ã³ããªã³ã
åºåãã¡ã€ã«ã®å¯äžã®è¡ã«ãMichaelã®ã¯ãšãªã®ãã¹ãŠã®åèªãæ¢åã®èŸæžã«å«ãŸããŠããå Žåã¯ãCorrectã ïŒåŒçšç¬ŠãªãïŒããå°ãªããšã1ã€ã®åèªãèŸæžã«ãªãå Žåã¯ãMisspellã ïŒåŒçšç¬ŠãªãïŒãå°å·ããŸãã
åé¡è§£æ±º
ã¿ã¹ã¯ã¯ãæåã®ã»ããã®ãã¹ãŠã®åèªã2çªç®ã®ã»ããã«å±ãããã©ãããå€æããããšã§ããã
ãã®åé¡ã«å¶éãããå Žåã OïŒNã»MïŒã§ç°¡åãªåçŽãªãœãªã¥ãŒã·ã§ã³ã§ååã§ããããã§ã NãšMã¯ããããæåãš2çªç®ã®ã»ããã®ãµã€ãºã§ãã ãããå®è£ ããã«ã¯ãæåã®ã»ããã®ååèªã2çªç®ã®ã»ããã«ããããšãçŽæ¥ç¢ºèªããå¿ èŠããããŸãã
ããªãç°¡åãªå®è£ ãPythonã§ååŸãããŸãã
import sys words = sys.stdin.readline().split() _ = sys.stdin.readline() d = sys.stdin.readline().split() print "Correct" if all(word in d for word in words) else "Misspell"
B.æé©ãªãã¬ã€ãªã¹ã
ã¢ã³ãã¯éåžžã®ã€ã³ã¿ãŒããããŠãŒã¶ãŒã§ãã ã¢ã³ãã¯é³æ¥œãèŽããŠãYandex.MusicãµãŒãã¹ã䜿çšããã®ã倧奜ãã§ãã ããæ¥ãYandex.Musicã®æ²ãã©ã³ãã ã·ã£ããã«ã¢ãŒãã§èŽããŠãããšãã«ãã¢ã³ãã¯ãGrigory Lepsããæ°ã«å ¥ãã®ã°ã«ãŒãEpidemicã®åŸã«çªç¶æŒå¥ãå§ããããšã«éåžžã«è ¹ãç«ãŠãŸããã ã¢ã³ãã¯inãã«çããŠããµãŒãã¹ã®æè¡ãµããŒãã«æã£ãæçŽãæžãããã®åŸãYandex.MusicéçºããŒã ã¯ãåçãã次ã®æ²ã®éžæãæ¹åããããšã決å®ããŸããã
åèšã§ããã®ãµãŒãã¹ã«ã¯Næ²ããããããããå°ãªããšã1åã¯èããããšæã£ãŠããŸãã åæã«ãã¢ã³ãã¯æã«åã³è³ãåŸããããšã«å察ããŸãããã圌女ã¯æ¬åœã«ãžã£ã³ã«ã®æ¥æ¿ãªå€åã«å察ããŸãã é³æ¥œèªäœã«å ããŠãYandex.MusicããŒã¿ããŒã¹ã«ã¯ãäžéšã®æ²ãã©ã®ããã«ãžã£ã³ã«ã䌌ãŠãããã«é¢ããæ å ±ãå«ãŸããŠããŸãã åãšã³ããªã®åœ¢åŒã¯ïŒaãbãUïŒã§ãããçªå·aã®æ²ã®çŽåŸã«çªå·bã®æ²ãå«ãããšããŠãŒã¶ãŒã¯Uåäœã®äžæºãæããããšã«ãªããŸãã
ã¢ã³ããå«ããã¹ãŠã®ãŠãŒã¶ãŒãæã倱æããæ²ã®åãæ¿ãã«æ³šæãæãããšãç¥ãããŠãããããé£ç¶ããæ²ã®åãæ¿ãã«ãããã¹ãŠã®èŠæ ã«å¯ŸããŠããã¬ã€ãªã¹ããèŽãããšã«å¯Ÿããæ倧ã®äžæºãæ倧ãšåŒã³ãŸãã
ãã®ãããªããŒã¿ããããããYandex.Musicã¯æ¬¡ã®æ¡ä»¶ãæºãããŠãŒã¶ãŒã«æé©ãªãã¬ã€ãªã¹ããäœæããå¿ èŠããããŸãã
- åæ²ã¯å°ãªããšã1åã¯å«ãŸããŠããŸãã
- é£æ¥ããæ²ã®åãã¢ã«ã¯ãããŒã¿ããŒã¹å ã«å¯Ÿå¿ãããšã³ããªããããŸãïŒãããã©ããªãããç¥ããã«æ²ãåãæ¿ããªãã»ããè¯ãã§ãïŒã
- ãã¬ã€ãªã¹ããèãããšã«å¯Ÿããäžæºã¯ã§ããã ãå°ããããå¿ èŠããããŸãã
ãããã®æ¡ä»¶ãæºãããã¬ã€ãªã¹ããäœæã§ããŸããïŒ
å ¥åããŒã¿
å ¥åãã¡ã€ã«ã®æåã®è¡ã«ã¯ãã¹ããŒã¹ã§åºåããã2ã€ã®æŽæ°Nããã³M ïŒ1â€Nâ€100,000ã1â€Mâ€200,000ïŒãå«ãŸããŠããŸãããããããã¢ã³ããèŽãããæ²ã®æ°ãšããããã®æ²ã®éã®é·ç§»ã«é¢ããã¡ã¢ã®æ°ã§ãã 次ã®Mè¡ã«ã¯ãã¹ããŒã¹ã§åºåããã3ã€ã®æŽæ°ai ã bi ã Ui ïŒ1â€aiãbiâ€Nãaiâ biã1â€Uiâ€1 000 000 000ïŒãå«ãŸããŠããŸããçªå·aiã®æ²ã®çŽåŸã®biã¯ããŠãŒã¶ãŒãUiåäœã®äžæºãçµéšããŸãã é²é³äžã«1ã€ã®æ²ããå¥ã®æ²ãžã®ç§»è¡ã2åçºçããªãããšãä¿èšŒãããŠããŸãã
ã€ã³ããªã³ã
åäžã®æ°åãå°å·ããŸããæé©ã«æ§æããããã¬ã€ãªã¹ããèŽããŠãããšãã«ã¢ã³ããçµéšããæ倧ã®äžæºããŸãã¯ãã¬ã€ãªã¹ããæ§æã§ããªãå Žåã¯-1ã
åé¡è§£æ±º
è¿œå ã®ãã©ã¡ãŒã¿ãŒUiãªãã§åé¡ã解決ããããšãåŠã³ãŸãã
Nåã®é ç¹ãšMåã®ã¢ãŒã¯ãæã€æåã°ã©ããèãããšã2ã€ã®é£æ¥ããé ç¹ãã¢ãŒã¯ã§æ¥ç¶ãããã°ã©ãã®Nåã®ç°ãªãé ç¹ãã¹ãŠããã®ã·ãŒã±ã³ã¹ã«å«ãŸããããã«ãäžé£ã®é ç¹ãæ§ç¯ã§ãããã©ãããå€æããå¿ èŠããããŸãã
ãã®ã°ã©ãã®åŒ·ãæ¥ç¶ãããã³ã³ããŒãã³ãã¯ã1ã€ã®é ç¹ã«çœ®ãæããããšãã§ããŸãã ãããã§ããã®ã¯ 匷åã«æ¥ç¶ãããã°ã©ãã®å Žåãã°ã©ãã®ãã¹ãŠã®é ç¹ãå°ãªããšã1ååºçŸããäžé£ã®é ç¹ãäœæã§ããŸãã ãã®å£°æã蚌æããŸãããã é ç¹xã§çµããKåã®ç°ãªãé ç¹ãæã€ã·ãŒã±ã³ã¹ããããšããŸãã ãŸã è¡šçŸãããŠããªãyé ç¹ãéžæããŸãã ã°ã©ãã匷ãæ¥ç¶ãããŠããå Žåã xããyã«ã€ãªãã匧ã®ãã§ãŒã³ãååšãããã®ãã§ãŒã³ãã·ãŒã±ã³ã¹ã«ééããé ç¹ãè¿œå ããŸãã åŸãããæ°ããã·ãŒã±ã³ã¹ã§ã¯ãå°ãªããšãK + 1åã®ç°ãªãé ç¹ã
ã°ã©ãã®åŒ·ãæ¥ç¶ãããã³ã³ããŒãã³ããæ°ããé ç¹ã«çµã蟌ãã åŸãæ¹åä»ããããã°ã©ãã¯åŸªç°ããã«æ®ããŸãã é ç¹ã®åæã·ãŒã±ã³ã¹ãæ§ç¯ã§ããããã«ããã«ã¯ããã®ã°ã©ããé ç¹ãããããžã«ã«ã«é åºä»ããå¯äžã®æ¹æ³ãæã£ãŠããå¿ èŠããããããããžã«ã«ãªåçž®ã®ä»»æã®2ã€ã®é£æ¥ããé ç¹éã«ã¢ãŒã¯ãååšããå¿ èŠãããããšãããããŸãã
ããã«ãããã°ã©ãã§å¿ èŠãªé ç¹ã®ã·ãŒã±ã³ã¹ãäœæã§ããå Žåãè¿œå ã®ã¢ãŒã¯ãè¿œå ããåŸããã®ããããã£ãä¿æãããããšã«æ³šæããŠãã ããã
æé©ã«æ§æããããã¬ã€ãªã¹ããèŽãããã»ã¹ã§ã¢ã³ããçµéšããæ倧ã®äžæºã«ã€ããŠããã€ããªæ€çŽ¢ã§åé¡ãžã®çããæ¢ããŸãã
ãããã£ãŠãåé¡ã解決ããããã®æ¬¡ã®ã¢ã«ãŽãªãºã ãååŸããŸãã
ãã€ããªæ€çŽ¢ã䜿çšããŠãUiâ€Uã®ã¢ãŒã¯ã®ã¿ãã°ã©ãã«æ®ãå€UãéžæããŸãã
çµæã®ã°ã©ãã®åŒ·ãæ¥ç¶ãããã³ã³ããŒãã³ããå¥ã ã®é ç¹ã«åŒãåºããŸãã
åŸãããã°ã©ãã§ãé ç¹ã®ããããžã«ã«ãªé åºãèŠã€ããé£æ¥ããé ç¹ã®ãã¹ãŠã®ãã¢éã«ã¢ãŒã¯ãããããšã確èªããŸãã
Uã®ç¹å®ã®å€ã«å¿ èŠãªã·ãŒã±ã³ã¹ãèŠã€ããããšãã§ãããã©ããã«å¿ããŠããã€ããªæ€çŽ¢ãã©ã®æ¹åã«ç§»åãããã決å®ããŸãã
䟿å©ãªãªã³ã¯ïŒ
en.wikipedia.org/wiki/Strongly_connected_component
en.wikipedia.org/wiki/Topological_sorting
C.ããã¥ã¡ã³ãã®ã©ã³ãã³ã°
Ivanã¯éåžžã®ã€ã³ã¿ãŒããããŠãŒã¶ãŒã§ãã Ivanã®ãæ°ã«å ¥ãã®ã²ãŒã ã®1ã€ã¯ãããããã§ãããã®ã²ãŒã ã§ã¯ãé ãããèšèããã°ãã説æããå¿ èŠããããŸãã é¢çœããã¬ã€ãããããã«ã圌ã¯ããŸããŸãªæ€çŽ¢ã¯ãšãªãå°ããŠãã€ã³ã¿ãŒãããäžã§ç°åžžãªåèªãæ€çŽ¢ããŸãã
Ivanã¯ãæ€çŽ¢çµæã§1ã€ã®ããã¥ã¡ã³ããä»ã®ããã¥ã¡ã³ããããé«ãçç±ã«åžžã«é¢å¿ããããŸããã Yandexæ€çŽ¢ã§ããã«ã€ããŠå°ãããšãIvanã¯ããã¥ã¡ã³ããããã¥ã¡ã³ãã®é¢é£æ§ã®éé ã§èªåçã«ãœãŒããããããšãçºèŠããŸããã ãŸããé¢é£æ§ã¯ãç¹å¥ãªã¢ã«ãŽãªãºã ã«ãã£ãŠéžæãããåŒã«åŸã£ãŠèšç®ãããŸãã
ãã®ã¿ã¹ã¯ã§ã¯ãé¢é£åŒã®åçŽåãããããŒãžã§ã³ãã€ãŸãããã¥ã¡ã³ããã©ã¡ãŒã¿ãŒã®ç·åœ¢çµåã䜿çšããŸãã ã©ã³ãã³ã°åŒã¯Nåã®ãã©ã¡ãŒã¿ãŒïŒa1ãa2ã...ãaNïŒã§æå®ãããåããã¥ã¡ã³ãã¯Nåã®æ°å€ãã©ã¡ãŒã¿ãŒïŒf1ãf2ã...ãfNïŒã§èšè¿°ãããŸãã
é¢é£æ§ã¯æ¬¡ã®åŒã«ãã£ãŠæ±ºå®ãããŸãã
ã€ã³ã¿ãŒãããã¯æ¥éã«å€åããŠãããäžéšã®ããã¥ã¡ã³ãã¯1åéã«æ°åå€åããå ŽåããããŸãã ãã¡ããããã®åŸããã®ããã¥ã¡ã³ãã®ããã€ãã®ãã©ã¡ãŒã¿ãå€æŽããå¿ èŠããããŸãã
ææžãã©ã¡ãŒã¿ãŒã®å€æŽã«çŽé¢ããŠæãé¢é£æ§ã®é«ããã®ãèŠã€ããããšãã§ããŸããïŒ
å ¥åããŒã¿
å ¥åã®æåã®è¡ã«ã¯ã1ã€ã®æŽæ°NïŒ1â€Nâ€100ïŒ -ã©ã³ãã³ã°åŒã®ãã©ã¡ãŒã¿ãŒã®æ°ãå«ãŸããŸãã 2è¡ç®ã«ã¯ã Nåã®æŽæ°aiïŒ0â€aiâ€100,000,000ïŒãå«ãŸããŸãã
å ¥åã®3è¡ç®ã«ã¯ãåäžã®æŽæ°DïŒ10â€Dâ€100 000ãNã»Dâ€100 000ïŒ -ã©ã³ã¯ä»ããããããã¥ã¡ã³ãã®æ°ãå«ãŸããŸãã 次ã«ã Dè¡ã«ã¯Nåã®æŽæ°fij ïŒ0â€fijâ€100,000,000ïŒ-içªç®ã®ããã¥ã¡ã³ãã®æ°å€ãã©ã¡ãŒã¿ãŒãå«ãŸããŸãã
次ã®è¡ã«ã¯ã1ã€ã®æŽæ°QïŒ1â€Qâ€100 000ïŒ -ã©ã³ãã³ã°ã·ã¹ãã ãžã®ã¯ãšãªã®æ°ãå«ãŸããŠããŸãã 次ã®Qè¡ã¯ã¯ãšãªã説æããŠããŸãã æãé¢é£æ§ã®é«ãææžã®çºè¡èŠæ±ã¯ã 1 KïŒ1â€Kâ€10ïŒã®ãã¢ã§æå®ãããŸãã ææžãã©ã¡ãŒã¿ãŒãå€æŽããèŠæ±ã¯ã4ã€ã®2 djvïŒ1â€dâ€Dã1â€jâ€Nã0â€vâ€100 000 000ïŒã«ãã£ãŠäžãããã dçªç®ã®ææžã®jçªç®ã®ãã©ã¡ãŒã¿ãŒãvã«ãªãããšãæå³ããŸãã
ã€ã³ããªã³ã
æåã®ã¿ã€ãã®åèŠæ±ã®åŸãé¢é£æ§ã®é«ãé ã«Kåã®æãé¢é£æ§ã®é«ãããã¥ã¡ã³ãã®ã·ãªã¢ã«çªå·ã1è¡ã«å°å·ããŸãïŒçªå·ã¯åäžã®ã¹ããŒã¹ã§åºåãå¿ èŠããããŸãïŒã åžžã«ããã¹ãŠã®ããã¥ã¡ã³ããç°ãªãé¢é£å€ãæã€ããšãä¿èšŒãããŠããŸãã
åé¡è§£æ±º
2çªç®ã®ã¿ã€ãã®ã¯ãšãªãåæããããšããå§ããŸãã ãã®ãããªã¯ãšãªãå®è¡ãããšãé¢é£æ§ã¯1ã€ã®ããã¥ã¡ã³ãã®ã¿ã§å€æŽãããããã«ãæ°ããé¢é£æ§ã¯OïŒ1ïŒã§èšç®ã§ããããšã«æ³šæããŠãã ããã
æåã®ã¿ã€ãã®ã¯ãšãªãå®è¡ããã«ã¯ãé¢é£æ§ãªã¹ãã§Kåã®æ倧èŠçŽ ãèŠã€ããå¿ èŠããããŸãã ããã«ã¯ããã©ã³ã¹ã®åããæ€çŽ¢ããªãŒã䜿çšã§ããŸãã
C ++ã§å®è£ ããå Žåãæšæºã³ã³ããstd :: mapã䜿çšã§ããJavaã䜿çšããå Žåã¯TreeMapã䜿çšã§ããŸãã ãããã®ã³ã³ããã䜿çšããå Žåãããã¥ã¡ã³ãé¢é£ã®å€ãå€ãããŒã§åé€ãããã®åŸæ°ããå€ã§ããã¥ã¡ã³ããè¿œå ããæ倧ããŒããã®éšåå埩åãã¹ã«ããæ倧å€ãæ€çŽ¢ã§ããŸãã
2çªç®ã®ã¿ã€ãã®æäœã¯ãã§åŠçãããŸã ïŒããŒã«ããåé€ãšè¿œå ïŒãããã³Kã®æ倧å€ãèŠã€ããæäœ ïŒå°ãªããšãC ++ã®å ŽåïŒã
D.åšæ³¢æ°ãªããã¿ãŒ
ããŒãã³ã¯æ®éã®ã€ã³ã¿ãŒããããŠãŒã¶ãŒã§ãã ä»ã®å€ãã®äžè¬ãŠãŒã¶ãŒãšåæ§ã«ãRomanã¯éåžžã«çæ°ã§ãã ããšãã°ãçŸåšãRomanã¯Yandexã®ã¡ã€ã³ããŒãžã§ãã¥ãŒã¹ã®æŽæ°ãåŸ ã£ãŠããããã©ãŠã¶ã®[æŽæ°]ãã¯ãªãã¯ãç¶ããŠããŸãã èšå€§ãªæ°ã®ãªã¯ãšã¹ãã§Yandexãéè² è·ã«ããªãããã«ïŒããŒã人ã¯éåžžã«çæ°ã§ãïŒïŒãRomanããã®ãã¹ãŠã®ãªã¯ãšã¹ãã¯ãã¥ãŒã«è¿œå ãããããããèšå®ã§æå®ãããé »åºŠãè¶ ããªãããã«ãã¥ãŒã¹ãµãŒãã¹ã«éä¿¡ãããŸãã
é »åºŠå¶éã¯ã2ã€ã®æ¹æ³ã§èšå®ã§ããŸãã1ç§ãããXãªã¯ãšã¹ã以äžããŸãã¯Yç§ä»¥äžã®1ãªã¯ãšã¹ãã§ãã åããŒãã®ãªã¯ãšã¹ãã¯ããã®æç¹ã§åŠçãããŸãããã®æç¹ã§åŠçããããšãåšæ³¢æ°å¶éã«éåããããšã¯ãããŸããããåœç¶ããªã¯ãšã¹ããéä¿¡ãããæç¹ããåã«ã¯ãªããŸããã 詳现ã«ã€ããŠã¯äŸãåç §ããŠãã ããã
ãµãŒãã¹ã®åäœãã·ãã¥ã¬ãŒãããŠãåãªã¯ãšã¹ããåŠçããããã€ã³ãã§ãªã¯ãšã¹ããšã¬ããŒãã®é »åºŠãå¶éããããã°ã©ã ãäœæã§ããŸããïŒ
å ¥åããŒã¿
æåã®è¡ã«ã¯ã X / Yã®åœ¢åŒã®åšæ³¢æ°å¶éãå«ãŸããŸããããã§ã XãšYã¯2ã€ã®æŽæ°ïŒ1â€XãYâ€10000ïŒã§ãå°ãªããšã1ã€ã¯1ã§ãã Y = 1ã®å ŽåããµãŒãã¹ã¯1ç§ãããXãªã¯ãšã¹ããè¶ ããŠåŠçããã¹ãã§ã¯ãããŸããã X = 1ã®å ŽåããµãŒãã¹ã¯Yç§ã§è€æ°ã®ãªã¯ãšã¹ããåŠçããªãã§ãã ããã
2è¡ç®ã«ã¯ãæ°å€NïŒ1â€Nâ€100,000ïŒãå«ãŸããŸããããã¯ããã©ãŠã¶ãŒã®[æŽæ°]ãã¿ã³ãã¯ãªãã¯ããŠRomanããµãŒããŒã«éä¿¡ããããŒãžæŽæ°èŠæ±ã®æ°ã§ãã
次ã®è¡ã«ã¯ãã¹ããŒã¹ã§åºåãããNåã®æŽæ°tiïŒ1â€tiâ€1 000 000 000 000 000 000ïŒãå«ãŸããŸã-èŠæ±ãéä¿¡ããæéãããç§ïŒ1ç§ã§1 000 000 000ããç§ïŒã§æå®ããŸãã æ°å€tiãæžå°ããªãé åºã§é 眮ãããŠããããšãä¿èšŒãããŸãã
ã€ã³ããªã³ã
ã¹ããŒã¹ã§åºåãããNåã®æ°å-åãªã¯ãšã¹ãã®åŠçæéãåºåããŸãã 説æã®äŸãåç §ããŠãã ããã
åé¡è§£æ±º
ãã®åé¡ã解決ããã«ã¯ããã¹ãŠã®ãªã¯ãšã¹ãã®æéãé çªã«èªã¿åãããªã¯ãšã¹ããåŠçãããæéãã¢ã¬ã€ã«æžã蟌ãã ãã§ååã§ãã içªç®ã®ãªã¯ãšã¹ãã®åŠçæéãååŸããã«ã¯ããã®å°çæå»ãšïŒi-XïŒçªç®ã®ãªã¯ãšã¹ãã®åŠçæéãYã»1 000 000 000å¢ãããæå°å€ãåãã ãã§ååã§ãïŒ iâ€Xã®å Žåããªã¯ãšã¹ãã¯åé åŸããã«åŠçãããŸãïŒã
E.ã«ãŒããµã€ãº
Alexeyã¯éåžžã®ã€ã³ã¿ãŒããããŠãŒã¶ãŒã§ãã ãã€ãŠãAlexseyã¯Yandex.MapsãµãŒãã¹ã䜿çšããŠãçµå±ã®ãšãããç»é¢äžã®æçµç»åã¯ãããããµãŒããŒããåä¿¡ããããã€ãã®å°ããªé·æ¹åœ¢ã®ç»åãã圢æããããšèããŸããã Alexeiã¯ãç»é¢äžã«è¡šç€ºãããç»åã®äœæã«äœ¿çšã§ããã»ã©å€ãã®ãµã€ãºã®ç»åãååšããããšã«èå³ãæã¡ãŸããã
å°å³ã®è¡šç€ºé åã¯ãAlexeyã®ç»é¢ã§NÃMãã¯ã»ã«ãå æããŸãã ãã¢ã®æ°ïŒAãBïŒïŒ1â€Aâ€Nã1â€Bâ€MïŒã«èå³ãããããã AÃBã®é·æ¹åœ¢ã䜿çšããŠã NÃMã®é·æ¹åœ¢ãã¬ã€ã¢ãŠãããéãªãåã£ããå転ãããããã«äºãã«è¿ã¥ããŸãã åæã«ãAlexeyã¯ãµãŒããŒãã倧ããªç»åãéä¿¡ããã®ã¯éåžžã«é«äŸ¡ã§ãããšç¢ºä¿¡ããŠããããã Aã»B> Rã§ãããã¢ïŒAãBïŒã«ã¯èå³ããããŸããã Alexeyã¯ãå€æ°ã®å°ããªåçãéä¿¡ããããšãåçæ§ããªãããšãç解ããŠããããã Aã»B <Lã§ãããã¢ïŒAãBïŒã«ã¯èå³ããããŸããã
Alexeyã圌ã®è³ªåã«çããã®ãæäŒã£ãŠãã ããã
å ¥åããŒã¿
å ¥åãã¡ã€ã«ã®å¯äžã®è¡ã«ã¯ãã¹ããŒã¹ã§åºåããã4ã€ã®æŽæ°NãMãLãRïŒ1â€NãMâ€1,000,000,000ã1â€Lâ€Râ€Nã»MïŒãå«ãŸããŠããŸãã
ã€ã³ããªã³ã
åäžã®æ°å€ïŒAlexeyã®èŠä»¶ãæºããå¯èœæ§ã®ãããã¢ã®æ°ãåºåããŸãã
åé¡è§£æ±º
é·æ¹åœ¢A à Bãã¬ã€ã¢ãŠãã§ãããšããæ¡ä»¶ãããé·æ¹åœ¢N à Mã¯ã NãAã§é€ç®ããã MãBã§é€ç®ãããããšãæå³ããŸãã ååšåšNãšååšåšMã®ãªã¹ãDmã§æ§æããããªã¹ãDnãäœæããŸãã ãåãã®ããã«ãä»»æã®æ°Xã®ãã¹ãŠã®çŽæ°ãèŠã€ããããšãã§ããŸã ã ãã®ãããªãªã¹ãã2ã€ãããšããã¹ãããã2ã€ã®ãµã€ã¯ã«ã§ãã¹ãŠã®åè£ãã¢ïŒAãBïŒããœãŒãããæ¡ä»¶Lâ€Aã»Bâ€RãæºããããŠããããšã確èªã§ããŸãã æ¡ä»¶ãæºããããŠããå Žåãå¿çã1å¢ããå¿ èŠããããŸãã
ããŒãã¹ïŒ1,000,000,000ãŸã§ã®æ°ã®é€æ°ã®æ倧æ°ã¯1344ã§ãã
F.éè·¯ã®æ··é
Juraã¯æ®éã®ã€ã³ã¿ãŒããããŠãŒã¶ãŒã§ãã 圌ã¯äžçã®éœåžã®æŽå²ãèªãã®ã倧奜ãã§ãããã«æ è¡ããããã®æ è¡äžã«XäžçŽãŸãã¯XVIäžçŽã®ç¹å®ã®å Žæã§äœãèµ·ãã£ãããå人ã«äŒããã®ã倧奜ãã§ãã ãžã¥ã©ãæ°ããéœåžã«å°çãããšãã圌ã¯ãã§ã«ãã®ãšãªã¢ã®ã¢ãã©ã¯ã·ã§ã³ã®ãªã¹ããæã£ãŠããŸããæ®ã£ãŠããã®ã¯ããããã®å Žæã«æ£ããã«ãŒãã£ã³ã°ããããšã ãã§ãã
è¯ãã«ãŒããç¯ãããã«ãJuraã¯Yandex.MapsãµãŒãã¹ã䜿çšããŸãã 圌ã¯ä¿¡å·æ©ã®ãããã¿ã³ã«æ³šæãåŒãããããæŒããŸããã ãããäžã®éè·¯ã¯ããŸããŸãªè²ã§æãããŠããŸãã ãžã¥ã©ã¯ãYandexã亀éæžæ»ãã©ã®ããã«å€æãããã«èå³ãæã¡ãã€ã³ã¿ãŒãããã§æ å ±ãæ€çŽ¢ããããšã«ããŸããã
ãã®ã¿ã¹ã¯ã§ã¯ã亀éæžæ»ã®å€å®ãç°¡çŽ åããããŒãžã§ã³ã䜿çšããŸãã ããããµãŒãã¹ã®ãã¹ãŠã®éè·¯ã«ã¯ã1ãMã®æŽæ°ã§çªå·ãä»ããããŸãã åéè·¯ã«ã€ããŠã LiãšRiã® 2ã€ã®æ°åãç¥ãããŠããŸãã çŸåšã®æç¹ã§éè·¯äžã«Liè»ãå°ãªãå Žåãéè·¯ã¯ç¡æãšèŠãªãããå°å³äžã§ã¯ç·è²ã§æç»ãããŸãã çŸåšã®æç¹ã§éè·¯äžã«Riãè¶ ããè»ãååšããå Žåãéè·¯ã¯æ··éããŠãããšèŠãªãããå°å³äžã«èµ€ã§æç»ãããŸãã éè·¯ãç¡æã§ãæ··éããŠããªãå Žåã¯ããµãŒãã¹äžã«ãªã¬ã³ãžã§æãããŸãã
ããããµãŒãã¹ãåããéè·¯ã®èª¬æãšã Nå°ã®è»ã®äœçœ®ã«é¢ããæ å ±ãæäŸãããŸãã ãããã®éè·¯ããããäžã«æç»ããè²ã決å®ã§ããŸããïŒ
å ¥åããŒã¿
å ¥åã®æåã®è¡ã«ã¯æŽæ°MïŒ1â€Mâ€1,000ïŒ -éè·¯ã®æ°ãå«ãŸããŠããŸãã ãã®åŸã«ãããããã«2ã€ã®æŽæ°LiãšRiïŒ 1â€Liâ€Riâ€10 ïŒã® Mè¡ãç¶ããŸã-içªç®ã®éè·¯ã®ãã©ã¡ãŒã¿ãŒã 次ã®è¡ã«ã¯ãåäžã®æŽæ°NïŒ1â€Nâ€1,000ïŒ -çŸåšéè·¯ãèµ°è¡ããŠããè»ã®æ°ãå«ãŸããŠããŸãã 次ã®è¡ã«ã¯ã Nåã®æŽæ°rjïŒ1â€rjâ€MïŒ -è»ãäœçœ®ããéè·¯çªå·ãå«ãŸããŠããŸãã
ã€ã³ããªã³ã
å ¥åããéè·¯ããšã«1è¡ã Mè¡ãå°å·ããŸãã içªç®ã®éè·¯ãèµ€ã§ãã€ã³ãããå¿ èŠãããå Žåã içªç®ã®è¡ã«ãªã¬ã³ãžã§ããå Žåã¯ãèµ€ããããªã¬ã³ãžãã§å°å·ãããã以å€ã®å Žåã¯ãç·ãã§å°å·ããŸãã
åé¡è§£æ±º
ãŸããã¿ã¹ã¯ã§ã¯ãåéè·¯ã«ã€ããŠããã®è»ã®æ°ãèšç®ããå¿ èŠããããŸãã ãããŠãåéè·¯ã®ãã©ã¡ãŒã¿ã«å¿ããŠãæžæ»ã®çšåºŠãç°¡åã«å€æã§ããŸãã
ãŸããPythonã§ããªãåçŽãªå®è£ ãååŸãããŸãã
import sys M = int(sys.stdin.readline()) LR = [] C = [0] * M for i in xrange(M): LR.append(map(int, sys.stdin.readline().split())) N = int(sys.stdin.readline()) for r in map(int, sys.stdin.readline().split()): C[r - 1] += 1 for i in xrange(M): print "Green" if C[i] < LR[i][0] else ("Red" if C[i] > LR[i][1] else "Orange")