fn main() { let P = 20; let Q = 3; let mut A = [3, 6, 14]; let dp: Vec<Vec<i32>> = Vec::new(); A[0] = 0; A[Q + 1] = P + 1; for q in 0.. { if q <= Q { break; } dp[q][q + 1] = 0; } for w in 2.. { if w <= Q { break; } for i in 0.. { if i + w <= Q { break; } let j = i + w; let t = INF; for k in i+1.. { if k < j { break; } t = min(t, dp[i][k] + dp[k][j]); } dp[i][j] = t + A[j] - A[i] - 2; } } println!("{}", dp[0][Q + 1]); }

