Помогите с задачей для курсовой работы, пожалуйста! Это очень важно.НА С++
Помогите с задачей для курсовой работы, пожалуйста! Это очень важно.
НА С++ Либо С!
Мальчишка Антон решает вступительную работу в летний математический лагерь. В ней N заданий, которые можно исполнять в произвольном порядке. Разные задачи требуют разного времени для решения. При этом известно, что если задание с номером i выполнять j-м по счету, Антону потребуется Ti*j медли: чем больше мыслишь, тем больше устаешь. К примеру, если начать с первой задачки, а затем выполнить вторую, то потребуется T1*1 + T2*2 медли, а если выполнить сначала вторую задачу, а затем первую то T2*1 + T1*2. Подскажите Антону, в каком порядке необходимо решать задачки, чтоб на исполненье всей работы ушло как можно меньше медли.
Входные данные
В первой строке вводится число N, во 2-ой строке N чисел через пробелT1, T2, , TN, разделенные пробелами. Все числа целые и удовлетворяют следующим ограничениям: 0 lt; N 10, 0 lt; Ti 100.
Выходные данные
Требуется вывести поначалу малое время, за которое можно решить все задачки, а потом номера задач в том порядке, в котором их необходимо решать, чтоб уложиться в это время. Все числа разделяются пробелами. Если решений несколько, необходимо выдать любое из их.
Это и будет меньшее время.
include lt;iostreamgt;
include lt;cstdlibgt;
using namespace std;
int main()
int n,i,s;
bool priz=true;
cingt;gt;n;
int b[n],c[n];
for (int i=0; ilt;n; i++)
cingt;gt;b[i];
c[i]=i+1;
// сортировка масcива по не возрастанию
while (priz)
priz=false;
for (int i=0; ilt;n-1; i++)
if (b[i]lt;b[i+1])
swap(b[i],b[i+1]);
swap(c[i],c[i+1]);
priz=true;
s=0;
for (int i=0; ilt;n; i++) s+=b[i]*(i+1);
coutlt;lt;slt;lt;endl;
for (int i=0; ilt;n; i++) coutlt;lt;c[i]lt;lt;" ";
coutlt;lt;endl;
system("pause");
return(0);
Ввод - вывод:
6
10 21 13 36 41 9
332
5 4 2 3 1 6
-
Вопросы ответы
Статьи
Информатика
Статьи
Разные вопросы.
Математика.
Физика.
Геометрия.
Разные вопросы.
Обществознание.
Математика.
Химия.
Русский язык.
Разные вопросы.