Witam,
od zawsze mam problem z ustaleniem złożoności, ogólnie nie do końca rozumiem o co w tym chodzi. Napisałem program, który algorytmem dynamicznym wypisuje różnice między dwoma ciągami liczb. Program ten ma mieć złożoność długość pierwszego ciągu razy długość drugiego ciągu. Nie wiem czy mój kod trzyma się tej złożoności, zmienna nw i no to odpowiednio długości ciągów:

#include <stdio.h>
#include <stdlib.h>

int min(int x, int y, int z){
    if( x<=y && x<=z )
        return x;
    else if( y<=x && y<=z )
        return y;
    else if( z<=x && z<=y)
        return z;
}

int main(){
    int nw, no, i, j, **tab;
    
    tab = (int**) malloc(1003 * sizeof(int*));
    for(i=0; i<1003; i++)
        tab[i] = (int*) malloc(1003 * sizeof(int));
    
    scanf("%d", &nw);	
    for(i=2; i<nw+2; i++)
        scanf("%d", &tab[0][i]);
        
    
    scanf("%d", &no);	
    for(i=2; i<no+2; i++)
        scanf("%d", &tab[i][0]);
        
    for(i=1; i<nw+2; i++)
        tab[1][i] = i-1;
    for(i=1; i<no+2; i++)
        tab[i][1] = i-1;
    tab[0][0]=0;
    i=2; j=2;
    for(i=2; i<nw+2; i++)
        for(j=2; j<no+2; j++){
            if(tab[0][i] == tab[j][0])
                tab[j][i] = tab[j-1][i-1];
            else{
                tab[j][i] = min(tab[j-1][i-1], tab[j][i-1], tab[j-1][i])+1;
            }
        }
    
    printf("%d\n", tab[j-1][i-1]);
    return 0;
} 

Proszę o pomoc, dzięki z góry