File tree Expand file tree Collapse file tree 1 file changed +30
-0
lines changed
Expand file tree Collapse file tree 1 file changed +30
-0
lines changed Original file line number Diff line number Diff line change 1+ """
2+ https://www.acmicpc.net/problem/2281
3+ # 참고 : https://cme10575.tistory.com/161
4+ """
5+ import sys
6+ input = sys .stdin .readline
7+
8+ n , m = map (int , input ().split ())
9+
10+ names = [int (input ()) for _ in range (n )]
11+ dp = [[- 1 ]* (m + 1 ) for _ in range (n )]
12+ dp [0 ][names [0 ]] = 0
13+
14+ for r in range (n - 1 ):
15+ for c in range (1 , m + 1 ):
16+ if dp [r ][c ] != - 1 :
17+ #뒤에 붙이는 경우의 수
18+ if c + 1 + names [r + 1 ] <= m :
19+ dp [r + 1 ][c + names [r + 1 ]+ 1 ] = dp [r ][c ]
20+ #다음줄에 쓰는 경우의 수
21+ if dp [r + 1 ][names [r + 1 ]] != - 1 :
22+ dp [r + 1 ][names [r + 1 ]] = min (dp [r + 1 ][names [r + 1 ]], dp [r ][c ] + (m - c )** 2 )
23+ else :
24+ dp [r + 1 ][names [r + 1 ]] = dp [r ][c ] + (m - c )** 2
25+
26+ answer = 1000000000
27+ for i in range (1 , m + 1 ):
28+ if dp [n - 1 ][i ] != - 1 :
29+ answer = min (answer , dp [n - 1 ][i ])
30+ print (answer )
You can’t perform that action at this time.
0 commit comments