Есть две проблемы, которые я могу найти в вашем коде. Во-первых, для всех значений 'i' f [i] не может быть 0. Итак, freq [0] будет иметь некоторое значение мусора, и вы сравниваете его с 'min'. Вы можете попытаться вычесть 1, а затем использовать его в качестве индекса в массиве freq.
freq[f[i]-1]+=p[i];` avail[f[i]-1] = true;`
Также измените размер freq и используйте 'm', а не 'm + 1'. Во-вторых, инициализируйте массив freq с 0, а не с -1, так как вы добавляете значения к его индексу, так что -1 в качестве начального значения изменит конечные результаты.
memset(freq,0,sizeof(freq));
Я сделал представление после внесения этих изменений и это было принято. Вы тоже можете попробовать.