Давайте вы сначала дадите нормальные, отображающие их назначение, имена переменным. Обновите вопрос. И тогда мы уже посмотрим где у вас ошибка.
А разбираться что такое l,c,m вообще нет желания.
ЗЫ и переменные можно объявлять через запятую, вот так:
int i,b,c,d;
и даже так:
int i=0, b=4, c=42;
UPD замените условие:
if (i!=p && j!=q && a[p][q]==x)
на следующее:
if ((i!=p || j!=q) && a[p][q]==x)
У вас из-за неправильной логики при проверке одинаковые элементы стоящие на одной строке или в одном столбце, считались разными.