Salve a tutti ho un problema con questo esercizio:
prendere due array ordinati e metterli in maniera ordinata in un terzo array (limite di tempo del programma = 1sec, limite memoria per i test = 512 MiB)
è un portale dove si caricano i programmi online e poi vengono eseguite con dei test prestabiliti.
Ora il mio codice (funzionante) è questo:
include <stdio.h>
int main(){
int n;
int m;
int *a;
int *b;
int *c;
scanf ("%d",&n);
a=(int*)malloc((n)*sizeof(int));
int i;
for (i=0; i<n; i++) {
scanf ("%d",&a[i]);
}
scanf ("%d",&m);
b=(int*)malloc(m*sizeof(int));
for (i=0; i<m; i++) {
scanf ("%d",&b[i]);
}
int p=n+m;
c=(int*)malloc(p*sizeof(int));
int j=0;
int y=0;
int x=0;
while ((y<n) || (j<m)) {
if (a[y]<=b[j]) {
c[x]=a[y];
y++;
}
else if (a[y]>b[j]){
c[x]=b[j];
j++;
}
x++;
if (y==n) {
for (i=j; i<m; i++) {
c[x]=b[i];
x++;
}
}
else if (j==m) {
for (i=y; i<n; i++) {
c[x]=b[i];
x++;
}
}
}
for (i=0; i<p; i++) {
printf ("%d\n",c[i]);
}
return 0;
}
il sito (come risultato su 3 test) mi convalida il primo test mentre gli altri due (composti da molti più input rispetto al primo) mi danno questo errore:
Execution killed with signal 11 (could be triggered by violating memory limits)
qualcuno mi può aiutare??