i solved this for 50 marks (3sec time) still i got TLE for 2 subtasks
#include
#include<bits/stdc++.h>
using namespace std;
#include
#define ll long long
int main(void) {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
ll w,h,n,m,temp,final_max=0;
cin>>w>>h>>n>>m;
vectorall_x,all_y;
for(ll i=0;i<n;i++)
{
cin>>temp;
all_x.push_back(temp);
}
for(ll i=0;i<m;i++)
{
cin>>temp;
all_y.push_back(temp);
}
vectornbi;
for(ll j=0;j<=h;j++)
{
bool flag=false;
for(ll i=0;i<m;i++)
{
if(all_y[i]==j)
{
flag=true;
break;
}
}
if(flag!=true)
{
nbi.push_back(j);
}
}
sets,s2,s3;
for(ll i=0;i<n;i++)
{
for(ll j=i+1;j<n;j++)
{
s.insert(abs(all_x[i]-all_x[j]));
}
}
for(ll i=0;i<m;i++)
{
for(ll j=i+1;j<m;j++)
{
s3.insert(abs(all_y[i]-all_y[j]));
}
}
// ---------------------------------------------------------------COMPULSARY-----------------------------------------------------------------------
ll count=0,max1=0,pos=0;
ll f=nbi.size();
for(ll j=0;j<f;j++)
{
count=0;
sets1,s4;
for(ll i=0;i<m;i++)
{
s1=s;
s4=s3;
s1.insert(abs(all_y[i]-nbi[j]));
ll k1=s1.size(),m1=s.size();
if(k1==m1)
{
s4.insert(abs(all_y[i]-nbi[j]));
ll k2=s3.size(),m2=s4.size();
if(k2<m2)
{
count++;
}
}
}
if(count>=max1)
{
max1=count;
pos=nbi[j];
}
}
// _____________________________________________________________________________________
ll max2=0;
set :: iterator itr;
for (itr = s.begin(); itr != s.end(); ++itr)
{
set<ll>tv;
tv=s3;
tv.insert(*itr);
if(tv.size()==s3.size())
{
max2++;
}
}
cout<<max1+max2<<endl;
}
can you check