Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var
- n, i, sum, ans: integer;
- mas: array[1..100] of integer;
- mark: array[1..100] of boolean;
- function maxcheck(): boolean;
- var
- tp: integer;
- ppp: boolean;
- begin
- ppp := true;
- for tp := 2 to n - 1 do
- if(mark[tp] = false) then ppp := false;
- if(ppp = false) then maxcheck := false
- else maxcheck := true;
- end;
- function check(plk, st: integer): integer;
- var
- pr: integer;
- begin
- if(st = 0) then begin
- for pr := plk - 1 downto 1 do
- if(mark[pr] = false) then break; //если 0, то влево, иначе вправо
- check := pr;
- end
- else begin
- for pr := plk + 1 to n do
- if(mark[pr] = false) then break;
- check := pr;
- end;
- end;
- procedure rec(versh: integer);
- var
- i, lf, rt: integer;
- begin
- if(versh = n - 1) then begin
- if(ans > sum) then ans := sum;
- end;
- for i := 2 to n - 1 do begin
- if(mark[i] = false) then begin
- mark[i] := true;
- lf := mas[check(i, 0)];
- rt := mas[check(i, 1)];
- sum := sum + mas[i] * (lf + rt);
- // writeln(i, ' ', lf, ' ', rt, ' ', sum);
- rec(versh + 1);
- mark[i] := false;
- sum := sum - mas[i] * (lf + rt);
- end;
- end;
- end;
- begin
- readln(n);
- for i := 1 to n do
- read(mas[i]);
- ans := 1000000000;
- sum := 0;
- rec(1);
- writeln(ans);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement