1 条题解
-
0Guest LV 0 MOD
-
1
#include<bits/stdc++.h> using namespace std; int b[1000005],a[1000005]; int n,m,x,k,ans=0; int work(int x) { int l=1,r=ans,mid; while(l<=r) { mid=(l+r)>>1; if(b[mid]>x) r=mid-1; else l=mid+1; } return l; } int main() { scanf("%d%d",&n,&m); for(int i=1; i<=n; i++) scanf("%d",&a[i]); for(int i=1; i<=n; i++) for(int j=2; j>=1; j--) { x=a[i]*j; if(x<m) continue; k=work(x); b[k]=x; ans=max(ans,k); } printf("%d\n",ans); return 0; }
- 1