1 solutions

  • 0
    @ 2024-12-11 0:49:57

    C++ :

    #include<cstdio>
    #include<vector>
    #include<ctime>
    #include<cctype>
    #include<algorithm>
    #define MAXN 1000001
    using namespace std;
    vector<int> f[MAXN];
    int a[MAXN]={0};
    int q[MAXN]={0};
    bool v[MAXN]={0};
    int n,ans=0;
    //int abs(int x){if(x>0) return x;return -x;}
    inline int read(){
    	int x=0;
    	char ch;
    	while(ch=getchar(),!isdigit(ch)) ;
    	while(x=x*10-'0'+ch,ch=getchar(),isdigit(ch));
    	return x;
    }
    int main(){
    	//freopen("seq8.in","r",stdin);
       // freopen("seq8.ans","w",stdout);
    	n=read();
    	for(int i=1;i<=n;i++) a[i]=read();
    	int my_max,fid,now;
        for(int i=1;i<=n;i++){
        	my_max=0;
        	for(int j=q[0];j>=1;j--){
        		int tem=q[j];
        		for(int k=f[tem].size()-1;k>=0;k--){
        			fid=f[tem][k]-a[i];
        			if(fid!=-1&&fid!=1){
        				my_max=tem;
        				break;
        			}
        		}
        		if(my_max!=0) break;
        	}
        	my_max++;
        	f[my_max].push_back(a[i]);
        	if(my_max>ans) ans=my_max;
        	if(!v[my_max]){
        		v[my_max]=1;
        		q[++q[0]]=my_max;
        	}
        }
        printf("%d\n",ans);
    	return 0;
    }
    
    • 1

    Information

    ID
    780
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By