1736E - Swap and Take - CodeForces Solution


dp greedy *2600

Please click on ads to support us..

Python Code:

n,a=int(input()),list(map(int,input().split()))
INF=10**9+7
f=[[-INF]*(n+1) for j in range(n+1)]
s=[[0]*(n+1) for j in range(n+1)]
ans=-INF
for i in range(1,n+1):
	for j in range(n,0,-1):
		for k in range(i,-1,-1):	
			if k:
				f[j][k]=f[j][k-1]+a[j-1]
			if j>=i and i+k>=j:
				f[j][k]=max(f[j][k],s[j-1][i+k-j]+a[j-1])
			ans=max(ans,f[j][k])
	for j in range(1,n+1):
		for k in range(i+1):
			s[j][k]=max(s[j-1][k],f[j][k])
print(ans)


Comments

Submit
0 Comments
More Questions

1553D - Backspace
1670D - Very Suspicious
1141B - Maximal Continuous Rest
1341A - Nastya and Rice
1133A - Middle of the Contest
385A - Bear and Raspberry
1311B - WeirdSort
1713F - Lost Array
236B - Easy Number Challenge
275A - Lights Out
147A - Punctuation
253A - Boys and Girls
1327E - Count The Blocks
984A - Game
12B - Correct Solution
1355B - Young Explorers
485A - Factory
628A - Tennis Tournament
1436B - Prime Square
1707B - Difference Array
1422C - Bargain
1611F - ATM and Students
660A - Co-prime Array
1692F - 3SUM
1470A - Strange Birthday Party
190D - Non-Secret Cypher
1721B - Deadly Laser
1721C - Min-Max Array Transformation
1721A - Image
1180C - Valeriy and Deque