Help me in solving NODRUGS problem

My issue

it is failing 4 2 2 (2 1 4 2) case
it should be showing “no” but is showing “yes”.

My code

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
	int t;
	cin>>t;
	while (t--)
	{int n,k,l;
	cin>>n>>k>>l;
	l=l--;
	int a[n];
	for (int i=0;i<n;i++)
	{cin>>a[i];}
	int u=a[n-1];
	sort(a,a+n);
	int e=a[n-1];
	int q=u+(k*l);
	if (q==e){cout<<"no";}
	else if (u==e){cout<<"no";}
	else if (q>e ){cout<<"yes";}
	else if (u>e){cout<<"yes";}
	else {cout<<"no";}
	cout<<endl;
	}
	return 0;
}

Problem Link: NODRUGS Problem - CodeChef

@sakshammaitri
There are one mistake in l=l-- that u have done and one more in for some base cases like what is n==1 and all so u generalize it i have coded it out in simpler way to cover all cases hope u will get it.
include
include
using namespace std;

int main() {
int t;
cin>>t;
while (t–)
{int n,k,l;
cin>>n>>k>>l;
l–;
int a[n];
for (int i=0;i<n;i++)
{cin>>a[i];}
int u=a[n-1];
//sort(a,a+n);
int ch=0;
int q=u+(k*l);
for(int i=0;i<n-1;i++)
{
if(u<=a[i])
{
ch=1;
break;
}
}
if(ch)
{
ch=0;
for(int i=0;i<n-1;i++)
{
if(q<=a[i])
{
ch=1;
break;
}
}
if(ch)
cout<<“No”;
else
cout<<“Yes”;
}
else
cout<<“Yes”;
cout<<endl;
}
return 0;
}

1 Like