funziona abbastanza bene...tranne se i due vettori non hanno le stesse dimensioni...errore mio o algoritmo che funziona proprio così? se è questione di algoritmo si può modificare per avere dimensioni diverse?

codice:
#include <stdio.h>
#define dim 100

int main(){

int a[dim], b[dim], c[dim];   
int i, j, n, m, k;


printf("inserire dimensioni vettore1 = ");
       scanf("%d", &n);

printf("\ncaricare il vettore in modo non decrescente\n");

for(i=0;i<n;i++){
   printf("a[%d] = ", i);
   scanf("%d", &a[i]);
}

printf("\ncaricare il vettore in modo non decrescente\n");

printf("inserire dimensioni vettore2 = ");
       scanf("%d", &m);
    
for(j=0;j<n;j++){
  printf("b[%d] = ", j);
  scanf("%d", &b[j]);
}

i=0;j=0;k=0;

while(i<n && j<m){
          if(a[i]<b[j]){
          c[k]=a[i];i++;
          }
          else {
               c[k]=b[j];j++;
               }
               k++;
               }
while(i<n){
           c[k]=a[i];i++;k++;
}
while(j<m){
           c[k]=b[j];j++;k++;
}

for(k=0;k<n+m;k++)
printf("a[%d] = %d\n", k,c[k]);

system("pause");
return 0;
}