#include <iostream>
#include <map>
#include <ctime>
#include <climits>

#define rangeMin	0
#define rangeMax	500
#define SIZE		500

using namespace std;

void print(const map<int, int>& map)
{
	cout << "Answer: " << endl;
	cout << INT_MIN << " ~ " << rangeMin << endl;
	for(auto iter = map.begin(); iter != map.end(); ++iter)
	{
		cout << iter->second << " ";
	}
	cout << endl;
	cout << rangeMax + 1 << " ~ " << INT_MAX << endl;
}

void exclusive(map<int, int>& map, int array[], int size)
{
	for(int i = 0; i < size; ++i)
	{
		int key = array[i];
		auto iter = map.find(key);
		if(iter != map.end())
		{
			map.erase(iter);
		}
	}
}

void randomArray(int array[], int size)
{
	cout << "Array: " << endl;
	for(int i = 0; i < size; ++i)
	{
		array[i] = rangeMin + rand() % (rangeMax + 1);
		cout << array[i] << " ";
	}
	cout << endl;
}

int main(int argc, char* argv[])
{
	srand(time(0));
	int array[SIZE] = { 0 };
	map<int, int> map;
	for(int i = rangeMin; i <= rangeMax; ++i) 
	{
		map.insert(make_pair(i, i));
	}

	randomArray(array, SIZE);
	exclusive(map, array, SIZE);
	print(map);

	return 0;
}