Поделитесь своими знаниями, ответьте на вопрос:
Сдля курсовой работы, ! это важно. на с++ или с! мальчик антон решает вступительную работу в летний лагерь. в ней n , которые можно выполнять в произвольном порядке. разные требуют разного времени для решения. при этом известно, что если с номером i выполнять j-м по счету, антону потребуется ti*j времени: чем больше думаешь, тем больше устаешь. например, если начать с первой , а затем выполнить вторую, то потребуется t1*1 + t2*2 времени, а если выполнить сначала вторую , а затем первую – то t2*1 + t1*2. подскажите антону, в каком порядке нужно решать , чтобы на выполнение всей работы ушло как можно меньше времени. входные данные в первой строке вводится число n, во второй строке —n чисел через пробелt1, t2, …, tn, разделенные пробелами. все числа целые и удовлетворяют следующим ограничениям: 0 < n ≤ 10, 0 < ti ≤ 100. выходные данные требуется вывести сначала минимальное время, за которое можно решить все , а затем – номера в том порядке, в котором их нужно решать, чтобы уложиться в это время. все числа разделяются пробелами. если решений несколько, нужно выдать любое из них.
Это и будет наименьшее время.
#include <iostream>
#include <cstdlib>
using namespace std;
int main() {
int n,i,s;
bool priz=true;
cin>>n;
int b[n],c[n];
for (int i=0; i<n; i++)
{
cin>>b[i];
c[i]=i+1;
}
// сортировка масcива по не возрастанию
while (priz)
{
priz=false;
for (int i=0; i<n-1; i++)
{
if (b[i]<b[i+1])
{
swap(b[i],b[i+1]);
swap(c[i],c[i+1]);
priz=true;
}
}
}
s=0;
for (int i=0; i<n; i++) s+=b[i]*(i+1);
cout<<s<<endl;
for (int i=0; i<n; i++) cout<<c[i]<<" ";
cout<<endl;
system("pause");
return(0);
}
Ввод - вывод:
6
10 21 13 36 41 9
332
5 4 2 3 1 6