#include<bits/stdc++.h> using namespace std; const int MAXN = 2e3+3, INF = 1e9+9; int n,k,dp[MAXN][MAXN], wino, ans = INF; int main(){ scanf("%d%d", &n, &k); for(int i = 1; i <= n; i++){ for(int j = 1; j <= i; j++){ scanf("%d", &wino); if(i < 3) dp[i][j] = i; else if(j == 1) dp[i][j] = dp[i-1][j] +1; else if(j == i) dp[i][j] = dp[i-1][j-1] +1; else dp[i][j] = dp[i-1][j-1] + dp[i-1][j] - dp[i-2][j-1] +1; if(dp[i][j] <= k) ans = min(ans, wino); } } printf("%d\n", ans); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #include<bits/stdc++.h> using namespace std; const int MAXN = 2e3+3, INF = 1e9+9; int n,k,dp[MAXN][MAXN], wino, ans = INF; int main(){ scanf("%d%d", &n, &k); for(int i = 1; i <= n; i++){ for(int j = 1; j <= i; j++){ scanf("%d", &wino); if(i < 3) dp[i][j] = i; else if(j == 1) dp[i][j] = dp[i-1][j] +1; else if(j == i) dp[i][j] = dp[i-1][j-1] +1; else dp[i][j] = dp[i-1][j-1] + dp[i-1][j] - dp[i-2][j-1] +1; if(dp[i][j] <= k) ans = min(ans, wino); } } printf("%d\n", ans); } |