4eyes4u

Untitled

Nov 20th, 2016
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.90 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const int N=310;
  5.  
  6. int dp[N][N], a[N];
  7. int n;
  8.  
  9. int solve (int n)
  10. {
  11.     if (n==1 || n==2) return 0;
  12.     int ret=n;
  13.     for (int i=1;i<=n;i++) scanf ("%d", &a[i]);
  14.     for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) dp[i][j]=n;
  15.  
  16.     for (int i=1;i<=n;i++)
  17.     {
  18.         for (int j=1;j<=n;j++)
  19.         {
  20.             if (i==j) continue;
  21.             for (int k=1;k<i;k++)
  22.             {
  23.                 if (k!=j && a[k]<a[i]) dp[i][j]=min(dp[i][j], dp[k][j]-1);
  24.             }
  25.             for (int k=1;k<j;k++)
  26.             {
  27.                 if (k!=i && a[k]>a[j]) dp[i][j]=min(dp[i][j], dp[i][k]-1);
  28.             }
  29.             ret=min(ret, dp[i][j]);
  30.         }
  31.     }
  32.     return ret-2;
  33. }
  34.  
  35. int main()
  36. {
  37.     while (true)
  38.     {
  39.         scanf ("%d", &n);
  40.         if (n==-1) return 0;
  41.         printf ("%d\n", solve(n));
  42.     }
  43.  
  44.     return 0;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment