Advertisement
Guest User

Untitled

a guest
Oct 21st, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.27 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. bool viz[20];
  5. int n, a[20], x[20], smn = 1000000;
  6.  
  7. void print() {
  8.     int s = 0;
  9.     for(int i = 1; i < n; i += 2)
  10.         if(a[x[i]]%a[x[i+1]] < a[x[i+1]]%a[x[i]])
  11.             s = s + a[x[i]]%a[x[i+1]];
  12.         else
  13.             s = s + a[x[i+1]]%a[x[i]];
  14.     if(smn > s)
  15.         smn = s;
  16. }
  17.  
  18. bool valid(int k) {
  19.     if(k%2 == 0) {
  20.         if(x[k-1] > x[k])
  21.             return false;
  22.  
  23.         int s = 0;
  24.         for(int i = 1; i < k; i += 2)
  25.             if(a[x[i]]%a[x[i+1]] < a[x[i+1]]%a[x[i]])
  26.                 s = s + a[x[i]]%a[x[i+1]];
  27.             else
  28.                 s = s + a[x[i+1]]%a[x[i]];
  29.         if(s >= smn)
  30.             return false;
  31.     }
  32.     if(k > 2 && k%2 == 1 && x[k-2] > x[k])
  33.         return false;
  34.     return true;
  35. }
  36.  
  37. void back(int k) {
  38.     for(int i = 2; i <= n; i++)
  39.         if(!viz[i]) {
  40.             x[k] = i;
  41.             viz[i] = 1;
  42.             if(valid(k)) {
  43.                 if(k < n)
  44.                     back(k+1);
  45.                 else
  46.                     print();
  47.             }
  48.             viz[i] = 0;
  49.         }
  50. }
  51.  
  52. int main() {
  53.     cin >> n;
  54.     for(int i = 1; i <= n; i++)
  55.         cin >> a[i];
  56.    
  57.     x[1] = 1;
  58.     viz[1] = 1;
  59.     back(2);
  60.     cout << smn;
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement