What is problem in my code ? it is not passing all the test cases

#include<bits/stdc++.h>
using namespace std;
#define ll long long int
#define INF 50000000000009999ll
using ld = long double;
using ull = unsigned long long;
int dp[105][105];
int find(vector arr,int low,int high,int num)
{
int ans=0;
while(low<=high)
{
int mid=(low+high)/2;
if(arr[mid]<=num)
{
ans=mid;
low=mid+1;
}
else
high=mid-1;
}
return ans;
}
int solve(vector arr)
{
int n=arr.size();
if(n==0)
return 0;
vector tail(n);
tail[0]=arr[0];
int len=1;
for(int i=1;i<n;i++)
{
if(arr[i] < tail[0])
tail[0]=arr[i];
else if(arr[i] > tail[len-1])
tail[len++]=arr[i];
else
{
int idx=find(arr,0,len-1,arr[i]);
tail[idx]=arr[i];
}
}
return len;

}
int main()
{
int n;
cin>>n;
vector arr(n);
for(int i=0;i<n;i++)
cin>>arr[i];
cout<<solve(arr);

return 0;

}

@sachinkumar24051999
Please send your code on CB IDE

this is my code #include<bits/stdc++.h> using namespace std; #define ll long long int #define INF 50000000000009999ll using ld = long double; using ull = unsigned long long; int dp[105][105]; int find(vector arr,int low,int high,int num) { int ans=0; while(low<=high) { int mid=(low+high)/2; if(arr[mid]<=num) { ans=mid; low=mid+1; } else high=mid-1; } return ans; } int solve(vector arr) { int n=arr.size(); if(n==0) return 0; vector tail(n); tail[0]=arr[0]; int len=1; for(int i=1;i<n;i++) { if(arr[i] < tail[0]) tail[0]=arr[i]; else if(arr[i] > tail[len-1]) tail[len++]=arr[i]; else { int idx=find(arr,0,len-1,arr[i]); tail[idx]=arr[i]; } } return len; } int main() { int n; cin>>n; vector arr(n); for(int i=0;i<n;i++) cin>>arr[i]; cout<<solve(arr); return 0; }

please use http://ide.codingblocks.com/ paste ur code in formated manner and then save the code and share it