Впечатляюще... правда, не очень понятно... Может пояснишь?
Так то я решил проблему но твое решение интереснее. Я сделал так
for (i1=0; i1<N-p-q+1; i1++) 
	  {
	    for (i2=i1+p+1; i2<N-q+1; i2++) 	    
 		{
		    for (k=0; k<N; k++) {variant[k]=0;}
			for (k=i1; k<i1+p; k++) {variant[k]=1;}
			for (k=i2; k<i2+q; k++) {variant[k]=1;}
                      // что то делаю с выборкой
                       }
               }
тут p,q,N вместо p, q, s.
Можешь очистить алгоритм от вывода, оставить только массив variant?