Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. var
  2. n, i, sum, ans: integer;
  3. mas: array[1..100] of integer;
  4. mark: array[1..100] of boolean;
  5.  
  6. function check(plk, st: integer): integer;
  7. var
  8. pr: integer;
  9. begin
  10. if(st = 0) then begin
  11. for pr := plk - 1 downto 1 do
  12. if(mark[pr] = false) then break; //если 0, то влево, иначе вправо
  13. check := pr;
  14. end
  15. else begin
  16. for pr := plk + 1 to n do
  17. if(mark[pr] = false) then break;
  18. check := pr;
  19. end;
  20. end;
  21.  
  22. procedure rec(versh: integer);
  23. var
  24. i, lf, rt: integer;
  25. begin
  26. if(versh = n - 1) then begin
  27. if(ans > sum) then ans := sum;
  28. end;
  29. for i := 2 to n - 1 do begin
  30. if(mark[i] = false) then begin
  31. mark[i] := true;
  32. lf := mas[check(i, 0)];
  33. rt := mas[check(i, 1)];
  34. sum := sum + mas[i] * (lf + rt);
  35. // writeln(i, ' ', lf, ' ', rt, ' ', sum);
  36. rec(versh + 1);
  37. mark[i] := false;
  38. sum := sum - mas[i] * (lf + rt);
  39. end;
  40. end;
  41. end;
  42.  
  43. begin
  44. readln(n);
  45. for i := 1 to n do
  46. read(mas[i]);
  47. ans := 1000000000;
  48. sum := 0;
  49. rec(1);
  50. writeln(ans);
  51. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement