Buscar

Solução URI 1259 em linguagem C

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

#include <stdio.h>
#include <stdlib.h>
int main(void) {
	int N, numero, tamanhoPar = 0, tamanhoImpar = 0, maior = 0;
	scanf("%d", &N);
	int vetPar[N], vetImpar[N]; 
	while(N--) {
		scanf("%d", &numero);
		if(numero % 2 == 0) {
			vetPar[tamanhoPar] = numero;
			if(vetPar[tamanhoPar] == maior) {
				maior = vetPar[tamanhoPar];
			}
			tamanhoPar++;
		}else {
			vetImpar[tamanhoImpar] = numero;
			tamanhoImpar++;
		}
	}
	int a = 0, b = 0;
	int *vetorAuxiliar = calloc(maior, sizeof(int));
	
	for(a = 0; a < tamanhoPar; a++) {
		vetorAuxiliar[vetPar[a]]++;
	}
	a = 0;
	while(a <= tamanhoPar) { 
		while(vetorAuxiliar[b] > 0) {
			vetPar[a] = b;
			vetorAuxiliar[b]--;
			a++;
			if(a > tamanhoPar) {
				break;
			} 
		}
		b++;
	}
	int memoria, troca, i, j;
	troca = 1; 
	for(j = tamanhoImpar-1; (j>=1) && (troca==1); j--){
		troca=0; 
		for(i = 0; i < j; i++) {
			if(vetImpar[i] < vetImpar[i+1]) {
				memoria = vetImpar[i];
				vetImpar[i] = vetImpar[i+1];
				vetImpar[i+1] = memoria;
				troca = 1;
			}
		}
	}
	for(i = 0; i < tamanhoPar; i++) {
		printf("%d\n", vetPar[i]);
	}
	for(i = 0; i < tamanhoImpar; i++) {
		printf("%d\n", vetImpar[i]);	
	}
	return 0;
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais