1 solutions
-
0
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