Гораздо проще рассматривать это как два кусочка, где один из них нулевой, тогда не нарушается общность. Ф-ия возвращает mex, mex это minimal exclusive — первый элемент, который не входит в множество. java всегда инициализирует falsом созданный массив.
на М+1 исправил
Я ведь упоминал, что использую это только в judge, люди которые пишут там на С++ не пользуются cin-ом, throw-ом и catch-ем. А не написал я про С потому что в С scanf() работает чуть медленнее чем в С++. Все это только для сравнений, Вы не так понимаете.
Вы правы в случае общего предназначения, но я использовал класс для задач в online judge, а там это было ни к чему. Я думаю что каждый человек, который захочет использовать данный класс сможет самостоятельно определить действия при исключении.
разбиения III полностью совпадают с разбиениями IV, поэтому мы ограничились только рассмотрением III. Вы можете расписать все эти разбиения и убедиться.
на М+1 исправил