View Code of Problem 4040

#include<bits/stdc++.h>
using namespace std;
int b[1000];
int main(){
	int n,x;cin>>n;
		int ans=0,d1=0,a[1000],f[1000],d2=1;
		//重复  剩余  
		memset(b,0,sizeof(b));
		for(int i=1;i<=n;++i){
			scanf("%d",&x);
			if(b[x]==0)
			a[d2++]=x;
			b[x]=1;
		}
		for(int i=1;i<=900;++i)
		if(b[i])++d1;
		ans+=(n-d1);
		for(int i=1;i<=d1;++i){
			f[i]=1;
			for(int j=1;j<i;++j){
				if(a[i]>a[j])
				f[i]=max(f[j]+1,f[i]);
			}
		}
		int d=-1;
		for(int i=1;i<=d1;++i)
		d=max(d,f[i]);
		cout<<ans+d1-d<<endl;
	}

Double click to view unformatted code.


Back to problem 4040