#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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8Y3RpbWU+CiNpbmNsdWRlIDxjbGltaXRzPgoKI2RlZmluZSByYW5nZU1pbgkwCiNkZWZpbmUgcmFuZ2VNYXgJNTAwCiNkZWZpbmUgU0laRQkJNTAwCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCBwcmludChjb25zdCBtYXA8aW50LCBpbnQ+JiBtYXApCnsKCWNvdXQgPDwgIkFuc3dlcjogIiA8PCBlbmRsOwoJY291dCA8PCBJTlRfTUlOIDw8ICIgfiAiIDw8IHJhbmdlTWluIDw8IGVuZGw7Cglmb3IoYXV0byBpdGVyID0gbWFwLmJlZ2luKCk7IGl0ZXIgIT0gbWFwLmVuZCgpOyArK2l0ZXIpCgl7CgkJY291dCA8PCBpdGVyLT5zZWNvbmQgPDwgIiAiOwoJfQoJY291dCA8PCBlbmRsOwoJY291dCA8PCByYW5nZU1heCArIDEgPDwgIiB+ICIgPDwgSU5UX01BWCA8PCBlbmRsOwp9Cgp2b2lkIGV4Y2x1c2l2ZShtYXA8aW50LCBpbnQ+JiBtYXAsIGludCBhcnJheVtdLCBpbnQgc2l6ZSkKewoJZm9yKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkKCXsKCQlpbnQga2V5ID0gYXJyYXlbaV07CgkJYXV0byBpdGVyID0gbWFwLmZpbmQoa2V5KTsKCQlpZihpdGVyICE9IG1hcC5lbmQoKSkKCQl7CgkJCW1hcC5lcmFzZShpdGVyKTsKCQl9Cgl9Cn0KCnZvaWQgcmFuZG9tQXJyYXkoaW50IGFycmF5W10sIGludCBzaXplKQp7Cgljb3V0IDw8ICJBcnJheTogIiA8PCBlbmRsOwoJZm9yKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkKCXsKCQlhcnJheVtpXSA9IHJhbmdlTWluICsgcmFuZCgpICUgKHJhbmdlTWF4ICsgMSk7CgkJY291dCA8PCBhcnJheVtpXSA8PCAiICI7Cgl9Cgljb3V0IDw8IGVuZGw7Cn0KCmludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCnsKCXNyYW5kKHRpbWUoMCkpOwoJaW50IGFycmF5W1NJWkVdID0geyAwIH07CgltYXA8aW50LCBpbnQ+IG1hcDsKCWZvcihpbnQgaSA9IHJhbmdlTWluOyBpIDw9IHJhbmdlTWF4OyArK2kpIAoJewoJCW1hcC5pbnNlcnQobWFrZV9wYWlyKGksIGkpKTsKCX0KCglyYW5kb21BcnJheShhcnJheSwgU0laRSk7CglleGNsdXNpdmUobWFwLCBhcnJheSwgU0laRSk7CglwcmludChtYXApOwoKCXJldHVybiAwOwp9