fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. typedef long long ll;
  6. typedef pair<int, int> ii;
  7.  
  8. const ll LINF = 1e18;
  9. const int INF = 1e9;
  10.  
  11. int n;
  12. int h[20], s[20];
  13. int w[20][20];
  14. ll best;
  15.  
  16. void backtrack(int i) {
  17. if (i == n) {
  18. ll ans = 0;
  19. for (int j = 0; j < n; j++) {
  20. ans += h[j] * s[j];
  21. for (int k = j + 1; k < n; k++) {
  22. ans += w[j][k] * s[j] * s[k];
  23. }
  24. }
  25. best = min(best, ans);
  26. return;
  27. }
  28.  
  29. s[i] = 1;
  30. backtrack(i + 1);
  31.  
  32. s[i] = -1;
  33. backtrack(i + 1);
  34. }
  35.  
  36. int main() {
  37. ios::sync_with_stdio(false);
  38. cin.tie(nullptr);
  39. cin >> n;
  40.  
  41. for (int i = 0; i < n; i++) cin >> h[i];
  42.  
  43. for (int i = 0; i < n; i++) {
  44. for (int j = i + 1; j < n; j++) cin >> w[i][j];
  45. }
  46.  
  47. best = LINF;
  48. backtrack(0);
  49.  
  50. cout << best << '\n';
  51. }
  52.  
Success #stdin #stdout 0.01s 5320KB
stdin
2
10 10
21
stdout
-21