今,Gâ—‹â—‹gle Code Jam ã®åœ°åŒºå¤§ä¼šãŒå§‹ã¾ã‚ã†ã¨ã—ã¦ã„る. æ–œã‚å³å‰ã®å¸ã«åº§ã£ã¦ã„ã‚‹ç”·ã® ID 㯠lyrically ã¨è¨€ã†ã‚‰ã—ã„. æ±äº¬å¤§å¦æ™‚代ã®è¨˜æ†¶ã«ï¼Œä¼¼ãŸã‚ˆã†ãª ID ã®ä»²é–“ãŒå±…ãŸè¦šãˆãŒã‚ã‚‹ãŒï¼Œåƒ•ã®ä»²é–“ã¯ä¸€äººæ®‹ã•ãšç¾Žå°‘女ã ã£ãŸã¯ãšã .
僕ã®è¨˜æ†¶ã®ä¸ã® lyrically ã¯ï¼Œã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã®åŠ›ã‚„実装ã®åŠ›ã‚‚ã•ãªãŒã‚‰ï¼Œ æ°—åˆã§å•é¡Œã«æ£è§£ã™ã‚‹ã“ã¨ã«ã‚‚定評ãŒã‚ã£ãŸï¼Ž 例ãˆã°ï¼Œè¨ˆç®—é‡ãŒå¤šå°‘悪ã„プãƒã‚°ãƒ©ãƒ ã§ã‚‚,上手ãªå®Ÿè£…ã‚’ã™ã‚‹ã“ã¨ã§é«˜é€Ÿã«ã—, æ£è§£ã¨ã™ã‚‹ã‚ˆã†ãªã“ã¨ã‚‚å¾—æ„ã¨ã—ã¦ã„ãŸï¼Ž
プãƒã‚°ãƒ©ãƒ を高速ã«ã™ã‚‹ä¸Šã§ï¼Œéžå¸¸ã«å¤§åˆ‡ã«ãªã£ã¦ãã‚‹ã®ãŒï¼Œ ã‚ャッシュメモリã¨ã®è¦ªå’Œæ€§ã§ã‚る.
ブãƒãƒƒã‚¯æ¯Žã«èªã¿è¾¼ã¿ã®ã‚³ã‚¹ãƒˆãŒç•°ãªã‚‹ãƒ¡ãƒ¢ãƒªã‚’考ãˆã‚‹ï¼Ž èµ·ã“ã‚‹å…¨ã¦ã®ãƒ¡ãƒ¢ãƒªã‚¢ã‚¯ã‚»ã‚¹ãŒã‚らã‹ã˜ã‚分ã‹ã£ãŸçŠ¶æ…‹ã§ã®ï¼Œ フルアソシアティブã®ã‚ャッシュメモリã§ã®æœ€å–„ãªã‚ャッシュ戦略を求ã‚ãŸã„. 以下,平易ãªè¨€è‘‰ã§èª¬æ˜Žã™ã‚‹ï¼Ž
M 個ã®ç®±ã¨ï¼ŒN 個ã®ãƒœãƒ¼ãƒ«ãŒã‚る. ボールã«ã¯ 1 ã‹ã‚‰ N ã¾ã§ã®ç•ªå·ãŒä»˜ã„ã¦ãŠã‚Šï¼Œ å„ボール i ã«ã¯é‡ã• wi ãŒæ±ºã¾ã£ã¦ã„る. ã¾ãŸï¼Œé•·ã• K ã®æ•°åˆ— a1, a2, …, aK ãŒä¸Žãˆã‚‰ã‚Œã‚‹ï¼Ž å„ aj 㯠1 ≤ aj ≤ N を満ãŸã™æ•´æ•°ã§ã‚る.
ã¯ã˜ã‚ã¯å…¨ã¦ã®ç®±ã¯ç©ºã§ã‚る. j = 1, 2, …, K ã®é †ã«ï¼Œä»¥ä¸‹ã‚’è¡Œã„ãŸã„.
コストã®å’Œã®æœ€å°å€¤ã‚’計算ã™ã‚‹ãƒ—ãƒã‚°ãƒ©ãƒ を作æˆã›ã‚ˆï¼Ž
入力ã®æœ€åˆã®è¡Œã¯ 3 ã¤ã®æ•´æ•° M, N, K ã‚’å«ã‚€ï¼Ž
続ã N 行㮠i 行目ã«ã¯æ•´æ•° wi ãŒæ›¸ã‹ã‚Œã¦ã„る.
続ã K 行㮠j 行目ã«ã¯æ•´æ•° aj ãŒæ›¸ã‹ã‚Œã¦ã„る.
コストã®å’Œã®æœ€å°å€¤ã‚’出力ã›ã‚ˆï¼Ž
ã“ã®å•é¡Œã®åˆ¤å®šã«ã¯ï¼Œ20 点分ã®ãƒ†ã‚¹ãƒˆã‚±ãƒ¼ã‚¹ã®ã‚°ãƒ«ãƒ¼ãƒ—ãŒè¨å®šã•ã‚Œã¦ã„る. ã“ã®ã‚°ãƒ«ãƒ¼ãƒ—ã«å«ã¾ã‚Œã‚‹ãƒ†ã‚¹ãƒˆã‚±ãƒ¼ã‚¹ã®å…¥åŠ›ã¯ä»¥ä¸‹ã‚’満ãŸã™ï¼Ž
入力例 1:
3 3 6 10 20 30 1 2 3 1 2 3
入力例 1 ã«å¯¾ã™ã‚‹å‡ºåŠ›ä¾‹:
60
入力例 2:
2 3 6 10 20 30 1 2 3 1 2 3
入力例 2 ã«å¯¾ã™ã‚‹å‡ºåŠ›ä¾‹:
80