1551E - Fixed Points - CodeForces Solution


binary search brute force dp *2000

Please click on ads to support us..

C++ Code:

#include <bits/stdc++.h>

using namespace std;

int v[6005], dp[6005][6005];

int n, k;

signed main()
{
    int t;
    cin >> t;
    while(t--)
    {
        cin >> n >> k;
        for(int i = 1; i <= n; i++)
            cin >> v[i];
        for(int i = 0; i <= n; i++)
        {
            for(int j = 0; j <= i; j++)
            {
                dp[i][j] = 0;
            }
        }
        for(int i = 0; i < n; i++)
        {
            for(int j = 0; j <= i; j++)
            {
                dp[i + 1][j] = max(dp[i + 1][j], dp[i][j]);
                dp[i + 1][j + 1] = max(dp[i + 1][j + 1], dp[i][j] + ((v[i + 1] == j + 1) ? 1 : 0));
            }
        }
        int rasp = -1;
        for(int i = n; i >= 0; i--)
        {
            if(dp[n][i] >= k)
            {
                rasp = n - i;
                break;
            }
        }
        cout << rasp << '\n';
    }
    return 0;
}


Comments

Submit
0 Comments
More Questions

1676G - White-Black Balanced Subtrees
1716D - Chip Move
1352F - Binary String Reconstruction
1487B - Cat Cycle
1679C - Rooks Defenders
56A - Bar
1694B - Paranoid String
35A - Shell Game
1684A - Digit Minimization
43B - Letter
1017A - The Rank
1698B - Rising Sand
235A - LCM Challenge
1075B - Taxi drivers and Lyft
1562A - The Miracle and the Sleeper
1216A - Prefixes
1490C - Sum of Cubes
868A - Bark to Unlock
873B - Balanced Substring
1401D - Maximum Distributed Tree
1716C - Robot in a Hallway
1688B - Patchouli's Magical Talisman
99A - Help Far Away Kingdom
622B - The Time
1688C - Manipulating History
1169D - Good Triple
1675B - Make It Increasing
588A - Duff and Meat
1541B - Pleasant Pairs
1626B - Minor Reduction