Задача гласит, что мы должны найти минимальное количество учеников для удаления, чтобы учащийся мог сдать экзамен.Поэтому я в основном добавляю студентов в мультимножество, так как в нем хранятся отсортированные значения, и, хотя отсортированная сумма больше, чем требуется, мы вычитаем ее и переходим к следующему.
Проблема связана с вводом:
3 4 3 9 1 1 9 8 9
с m: для прохождения отметки требуется 14
Здесь при шестом индексе ввода, который равен 9, который не был добавлен в мультимножество, каким-то образом удаляется.
Вывод, который я получаю при запуске проблемного ввода:
0 0 0 ;4--;3-- 2 ;9-- 1 ;9-- 1 ;9--;4--;9-- 3 ;9--;9--;9-- 3 ;9--;9--;9--;9-- 4
Значения в: "" - содержат * x, который вычитается из суммы, есть дополнительные 9, но я незнаете как?
multiset<int> st;
int setsum =0;
for(int i=0;i<n;i++)
{
int sum = setsum+ar[i];
if((sum)<=m)
{
cout<<"0 ";
}
else
{
//cout<<sum<<"-*";
int cnt = 0;
auto x = st.rbegin();
while(sum>m)
{
sum -= *x;
//cout<<";"<<*x<<"--";
x--;
//if(i==3)
//cout<<*x<<"++";
cnt++;
}
cout<<" "<<cnt<<" ";
}
st.emplace(ar[i]);
setsum += ar[i];
}