Advertisement
Mahmoud_Hawara

Local Max Version 2

Mar 22nd, 2023
849
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.54 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #pragma GCC optimize("-Ofast")
  6. #pragma GCC optimize("-ffast-math")
  7. #pragma GCC optimize("-funroll-loops")
  8. #pragma GCC optimize("-funroll-all-loops,-fpeel-loops,-funswitch-loops")
  9. #pragma GCC target("sse,sse2,sse3,ssse3,sse4,sse4.2,popcnt,abm,mmx,avx2,tune=native")
  10.  
  11. #define ll long long
  12. #define IO ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  13.  
  14. const int N = 2e6 + 5, M = 1e2 + 5, MM = 55, OO = 1e9;
  15. const double PI = acos(-1), EPS = 1e-6;
  16. const int dx[8] = {0, 0, 1, -1, 1, 1, -1, -1};
  17. const int dy[8] = {1, -1, 0, 0, 1, -1, 1, -1};
  18. const long long MOD = 1e9 + 7, MOD2 = 998244353;
  19.  
  20. int t = 1, n, a[M], ans, mem[M][M][M][MM], k;
  21.  
  22. int dp(int first, int mid, int i, int k)
  23. {
  24.     if (k < 0)return OO;
  25.     if (i == n + 1)
  26.     {
  27.         if (k == 0)return 0;
  28.         return OO;
  29.     }
  30.  
  31.     int &ret = mem[first][mid][i][k];
  32.     if (~ret)return ret;
  33.  
  34.     int c1 = 1 + dp(first, mid, i + 1, k), c2;
  35.     if (first == 0)c2 = dp(i, 0, i + 1, k);
  36.     else if (mid == 0)c2 = dp(first, i, i + 1, k);
  37.     else c2 = dp(mid, i, i + 1, k - (a[mid] > a[first] && a[mid] > a[i]));
  38.  
  39.     c1 = min(c1, OO);
  40.     c2 = min(c2, OO);
  41.  
  42.     return ret = min(c1, c2);
  43. }
  44.  
  45. void solve()
  46. {
  47.     memset(mem, -1, sizeof mem);
  48.     cin >> n >> k;
  49.     for (int i = 1; i <= n; i++)
  50.     {
  51.         cin >> a[i];
  52.     }
  53.     cout << (dp(0, 0, 1, k) != OO ? mem[0][0][1][k] : -1);
  54.     return;
  55. }
  56.  
  57. int main()
  58. {    
  59.     IO
  60.  
  61.     // cin >> t;
  62.     while (t--)
  63.     {
  64.         solve();
  65.     }
  66.    
  67.     return 0;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement