// l-inegalites.c

// << Algorithmique du texte >>
// Maxime Crochemore, Christophe Hancart et Thierry Lecroq
// Vuibert, 2001.

#include <stdio.h>
#include "chl.h"
#include "cellule.h"
#include "fifo.h"
#include "allouer.h"
#include "ineg-fusion.h"


void lInegalites(Mot x, Longueur m, Mot y, Longueur n, int k, File G[]) {
   File F, J;
   int f, g, j;

   F = fileVide();
   f = g = -1;
   for (j = 0; j <= n - m; ++j) {
      if (longueur(F) > 0 && *(int *)tete(F) == j - f - 1)
         defiler(F);
      if (j <= g)
         J = inegFusion(x, y, f, j, g, k, F, G[j - f]);
      else
         J = fileVide();
      if (longueur(J) <= k) {
         F = J;
         f = j;
         do {
            ++g;
            if (x[g - j] != y[g])
               enfiler(F, nouvelEntier(g - j));
         }
         while (longueur(F) <= k && g < j + m - 1);
         signalerSi(longueur(F) <= k);
      }
   }
}