Advertisement
Guest User

Untitled

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