Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int main(){
- int n;
- while(cin>>n){
- if(n == -1) break;
- int dp[n+1][n+1][n+1] = { 0 };
- int arr[n+1];
- for(int i=0;i<n;i++){
- cin>>arr[i+1];
- }
- for(int k=1;k<n+1;k++) for(int i=0;i<k+1;i++) for(int j=0;j<k+1;j++){
- if(i != k and j != k){
- dp[k][i][j] = dp[k-1][i][j]; // no pinto nada
- if(i==0) dp[k][k][j] = max(dp[k][k][j],dp[k-1][i][j]+1);
- else if(arr[k] > arr[i]) dp[k][k][j] = max(dp[k][k][j],dp[k-1][i][j] + 1);
- if(j==0) dp[k][i][k] = max(dp[k][i][k],dp[k][i][j] +1);
- else if(arr[k] < arr[j]) dp[k][i][k] = max(dp[k][i][k],dp[k-1][i][j] +1);
- }
- }
- int answer = 0;
- for(int i=0;i<n+1;i++) for(int j=0;j<n+1;j++){
- answer = max(answer, dp[n][i][j]);
- }
- cout<<n-answer<<endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement