For Example: N=5, M=4
A=[4,2,10,5,9]
B=[4,5,6,15]
so the one of longest sorted array is [2,4,5,6,9,15]
this is my Approach but want to know is there any efficient approach available. I can assure it is not from any online coding contest, it is being asked to me in an interview so I want to know the efficient approach if any.
#include<bits/stdc++.h>
using namespace std;
int mx=0;
void generateUtil(int A[], int B[], int C[], int i, int j, int m, int n,
int len, bool flag)
{
if (flag)
{
if (len)
mx=max(mx,len+1);
for (int k = i; k < m; k++)
{
if (!len)
{
C[len] = A[k];
generateUtil(A, B, C, k+1, j, m, n, len, !flag);
}
{
if (A[k] > C[len])
{
C[len+1] = A[k];
generateUtil(A, B, C, k+1, j, m, n, len+1, !flag);
}
}
}
}
{
for (int l = j; l < n; l++)
{
if (B[l] > C[len])
{
C[len+1] = B[l];
generateUtil(A, B, C, i, l+1, m, n, len+1, !flag);
}
}
}
}
void generate(int A[], int B[], int m, int n)
{
int C[m+n];
generateUtil(A, B, C, 0, 0, m, n, 0, true);
}
int main()
{
int n,m,i,j;
cin>>n>>m;
int A[n],B[m];
for(i=0;i<n;i++)
{
cin>>A[i];
}
for(j=0;j<n;j++)
{
cin>>B[j];
}
generate(A, B, n, m);
cout<<mx<<"\n";
return 0;
}