You cannot have more than 32767 elements in one array. The reason is explained nicely by Majenko.
Solution for your problem is very simple, because you need only 41400 elements:
class MyArray
{
static char array1[30000] = {...};
static char array2[11400] = {...}; // rest
public:
char get(long index)
{
return index > 30000 ? array2[index - 30000] : array1[index];
}
char operator[] (long index)
{
return get(index);
}
};
So you can use two arrays and depending of the index choose which one to use. I think it is faster than using array of ints, because you need to have division (by two, so it can be only shift right by one) and than again shifting to get the char. Also it is easier to use because for ints you need first to pack values (two values in one int).
This is just example code, fit it to your needs.