[RISOLTO]esercizio su incrocio di array [C]

di il
5 risposte

[RISOLTO]esercizio su incrocio di array [C]

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??

5 Risposte

Devi accedere o registrarti per scrivere nel forum
5 risposte