백준 11728 c
#include <stdio.h>
#include <stdlib.h>
#pragma warning (disable:4996)
int input(int lower, int upper)
{
//cout << "input()" << endl;
int A;
while (1)
{
scanf("%d", &A);
if (A >= lower && A <= upper)
{
break;
}
else
{
;
}
}
return A;
}
void input_arr(int* arr, int n)
{
int i;
for (i = 0; i < n; i++)
{
arr[i] = input(-1000000000, 1000000000);
}
return;
}
void merge_arr(int* A, int N, int* B, int M)
{
int sum = N + M;
int i, j = 0, k = 0;
int* merge_arr = (int*)malloc(sizeof(int) * sum);
if (merge_arr == NULL)
{
return;
}
else
{
;
}
for (i = 0; i < sum; i++)
{
if (j == N)
{
merge_arr[i] = B[k];
k++;
}
else if (k == M)
{
merge_arr[i] = A[j];
j++;
}
else if (A[j] <= B[k])
{
merge_arr[i] = A[j];
j++;
}
else if (A[j] > B[k])
{
merge_arr[i] = B[k];
k++;
}
else
{
;
}
}
for (i = 0; i < sum; i++)
{
printf("%d ", merge_arr[i]);
}
printf("\n");
free(merge_arr);
return;
}
int main(void)
{
int N, M;
N = input(1, 1000000);
M = input(1, 1000000);
int *A, *B;
A = (int*)malloc(sizeof(int) * N);
B = (int*)malloc(sizeof(int) * M);
if (A == NULL || B == NULL)
{
return 1;
}
else
{
;
}
input_arr(A, N);
input_arr(B, M);
merge_arr(A, N, B, M);
free(A);
free(B);
return 0;
}