BRIDGE - Building Bridges - SPOJ Solution C++

  Problem Link : BRIDGE 


👉 Hint : edit please

 


✅ C++ Solution :

 
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
struct node{
    ll x,y;
};
typedef struct node NODE;
NODE arr1[1002];
ll arr2[1002];
ll dp[1002];
bool comp(NODE a,NODE b)
{
   if(a.x != b.x)
        return a.x < b.x;
    return a.y < b.y;    
}

 
ll LIS(ll arr[],ll n)
{
	ll i,j,ans=dp[0];
	for(i=1;i<n;i++)
	{
		for(j=i-1;j>=0;j--)
			if(arr[j]<=arr[i])
			    dp[i]=max(dp[i],dp[j]+1);
		ans=max(ans,dp[i]);	
	}
	return ans;
}
 
 
 
int main()
{
	ll t;
	cin>>t;
	while(t--)
	{
          
		ll n;
		cin>>n;
		for(ll i=0;i<n;i++)	
		    dp[i]=1;
		for(ll i=0;i<n;i++)
		{
			cin>>arr1[i].x;
		
		}
		for(ll i=0;i<n;i++)
		{
			cin>>arr1[i].y;
	
		}
		sort(arr1,arr1+n,comp);
		for(ll i=0;i<n;i++)
		{
		    arr2[i]=arr1[i].y;
		   
		}
		cout<<LIS(arr2,n)<<endl;

	}
}  

 

Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook. 

😇Happy Learning!!