Будем заполнять исходный массив последовательно, поддерживая последнее известное значение суммы. Если pi = - 1, то положим ai = m, потому что меньшее значение записать нельзя, а большее возможно помешает в дальнейшем.
При этом, если pi ≠ - 1, то положим ai = pi - pref_sum, где pref_sum — сумма уже заполненных элементов a. Если в таком случае, ai оказалось меньше m, то решения не существует, так как pref_sum минимально возможный по построению.
Итоговая сложность представленного решения O(n).