Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int N=310;
- int dp[N][N], a[N];
- int n;
- int solve (int n)
- {
- if (n==1 || n==2) return 0;
- int ret=n;
- for (int i=1;i<=n;i++) scanf ("%d", &a[i]);
- for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) dp[i][j]=n;
- for (int i=1;i<=n;i++)
- {
- for (int j=1;j<=n;j++)
- {
- if (i==j) continue;
- for (int k=1;k<i;k++)
- {
- if (k!=j && a[k]<a[i]) dp[i][j]=min(dp[i][j], dp[k][j]-1);
- }
- for (int k=1;k<j;k++)
- {
- if (k!=i && a[k]>a[j]) dp[i][j]=min(dp[i][j], dp[i][k]-1);
- }
- ret=min(ret, dp[i][j]);
- }
- }
- return ret-2;
- }
- int main()
- {
- while (true)
- {
- scanf ("%d", &n);
- if (n==-1) return 0;
- printf ("%d\n", solve(n));
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment