// PascalABC.NET 3.3, сборка 1542 от 05.10.2017 // Внимание! Если программа не работает, обновите версию!
begin var n:=ReadInteger('Количество строк/столбцов в матрице:'); Writeln('*** Исходная матрица [',n,',',n,'] ***'); var c:=MatrRandom(n,n,-99,99); c.Println(4); Writeln(4*c.ColCount*'-'); var t:=new real[2*n]; var j:=0; for var i:=0 to n-1 do begin t[j]:=c[i,i]; t[j+n]:=c[i,n-i-1]; j+=1 end; t.Println end.
Это и будет наименьшее время.
#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
// Внимание! Если программа не работает, обновите версию!
begin
var n:=ReadInteger('Количество строк/столбцов в матрице:');
Writeln('*** Исходная матрица [',n,',',n,'] ***');
var c:=MatrRandom(n,n,-99,99);
c.Println(4); Writeln(4*c.ColCount*'-');
var t:=new real[2*n];
var j:=0;
for var i:=0 to n-1 do begin
t[j]:=c[i,i];
t[j+n]:=c[i,n-i-1];
j+=1
end;
t.Println
end.
Пример
Количество строк/столбцов в матрице: 7
*** Исходная матрица [7,7] ***
-61 73 25 31 91 -61 -13
-9 -51 -98 57 -46 -16 -39
-14 68 -77 16 74 17 86
9 -29 -2 -17 -30 23 84
71 15 22 -58 -46 42 -96
-29 -38 30 -51 70 -67 -15
8 -96 -22 85 41 -71 -57
-61 -51 -77 -17 -46 -67 -57 -13 -16 74 -17 22 -38 8