diff --git a/tp4/lib_conjunto.c b/tp4/lib_conjunto.c
index c5416dfffe5b3fa037088a4c6f387826630bf1b8..b88f1db8df951d6566ca3341c568d9d21dcc8c38 100644
--- a/tp4/lib_conjunto.c
+++ b/tp4/lib_conjunto.c
@@ -135,35 +135,24 @@ conjunto_t *uniao_cjt(conjunto_t *c1, conjunto_t *c2) {
 	if ( !(uniao = cria_cjt(c1->max)) )
 		return NULL;
 
-	conjunto_t **menor_cjt = cardinalidade_cjt(c1) < cardinalidade_cjt(c2) ? &c1 : &c2;
-	conjunto_t **maior_cjt = cardinalidade_cjt(c1) > cardinalidade_cjt(c2) ? &c1 : &c2;
-	
-	/* while (c1->ptr < cardinalidade_cjt(c1) && c2->ptr < cardinalidade_cjt(c2)) { */
-	/* 	if (c1->v[c1->ptr] == c2->v[c2->ptr]) { */
-	/* 		insere_cjt(uniao, c1->v[c1->ptr]); */
-	/* 		c1->ptr++; */
-	/* 		c2->ptr++; */
-	/* 	} else { */
-	/* 		if (c1->v[c1->ptr] < c2->v[c2->ptr]) { */
-	/* 			insere_cjt(uniao, c1->v[c1->ptr]); */
-	/* 			c1->ptr++; */
-	/* 		} else { */
-	/* 			insere_cjt(uniao, c2->v[c2->ptr]); */
-	/* 			c2->ptr++; */
-	/* 		} */
-	/* 	} */
-	/* } */
-	
-	/* TODO: arrumar isso aqui de cima ^ e apagar isso aqui de baixo v */
+	inicia_iterador_cjt(c1);
+	inicia_iterador_cjt(c2);
 
-	int i;
-	for (i = 0; i < cardinalidade_cjt(*menor_cjt); i++) {
-		insere_cjt(uniao, c1->v[i]);
-		insere_cjt(uniao, c2->v[i]);
+	while (c1->ptr < cardinalidade_cjt(c1) && c2->ptr < cardinalidade_cjt(c2)) {
+		if (c1->v[c1->ptr] < c2->v[c2->ptr]) {
+			insere_cjt(uniao, c1->v[c1->ptr]);
+			c1->ptr++;
+		} else {
+			insere_cjt(uniao, c2->v[c2->ptr]);
+			c2->ptr++;
+		}
 	}
-	
-	for (i = cardinalidade_cjt(*menor_cjt); i < cardinalidade_cjt(*maior_cjt); i++) {
-		insere_cjt(uniao, (*maior_cjt)->v[i]);
+
+	conjunto_t **ainda_falta = c1->ptr == cardinalidade_cjt(c1) ? &c2 : &c1;
+
+	int i;
+	for (i = (*ainda_falta)->ptr; i < cardinalidade_cjt(*ainda_falta); i++) {
+		insere_cjt(uniao, (*ainda_falta)->v[i]);
 	}
 
 	inicia_iterador_cjt(c1);
diff --git a/tp4/tp4 b/tp4/tp4
index 0487535f0ba3e7e14013526730e2a1787577a66d..20a040c28befaad663997ebf45fbef3595571709 100755
Binary files a/tp4/tp4 and b/tp4/tp4 differ