/*
求最大最小数
有M个(M<=10000)10进制整数,求出这M个数字中的最大值和最小值。每个数字的绝对值不大于1000000。
【输入说明】
在程序当前路径下存在文本文件execute.stdin,程序从execute.stdin中读取输入数据。
execute.stdin中的数字用空格隔开。
*/
#include <iostream>
#include <fstream>
using namespace std;
#define MAX 10000
void MergeArray(int a[], int first, int mid, int last, int temp[])
{
int i = first, j = mid + 1, k = 0;
int m = mid, n = last;
while(i <= m && j <= n)
{
if(a[i] < a[j])
temp[k++] = a[i++];
else
temp[k++] = a[j++];
}
while(i <= m)
temp[k++] = a[i++];
while(j <= n)
temp[k++] = a[j++];
for(i = 0; i < k; ++i)
a[first + i] = temp[i];
}
void mergesort(int a[], int first, int last, int temp[])
{
if(first < last)
{
int mid = (first + last) / 2;
mergesort(a, first, mid, temp);
mergesort(a, mid + 1, last, temp);
MergeArray(a, first, mid, last, temp);
}
}
bool MergeSort(int a[], int n)
{
int *p = new int[n];
if(p == NULL)
return false;
mergesort(a, 0, n - 1, p);
delete[] p;
cout << a[n-1] << " " << a[0];
return true;
}
int main()
{
int n = 0, iVal, a[MAX];
ifstream ifs("execute.stdin");
while (ifs >> iVal)
a[n++] = iVal;
MergeSort(a, n);
ifs,close();
system("pause");
return 0;
}