#include #include #include #include #include #include #include #include #include using namespace std; class BuyingFlowers { public: int buy(vector roses, vector lilies); }; int is_valid(int r, int c, int tr, int tl) { if (c%2 == 0 || r%2 == 0) return (tr == tl); return (tl == tr+1 || tr == tl+1); } int BuyingFlowers::buy(vector roses, vector lilies) { int i, e, tr, tl, r, c; int min; min = 1000000; for (e = 1; e < (1 << roses.size()); e++) { tr = 0; tl = 0; for (i = 0; i < roses.size(); i++) { if (e & (1 << i)) { tr += roses[i]; tl += lilies[i]; } } for (r = 1; r*r <= (tr+tl); r++) { if ((tr+tl)%r == 0) { c = (tr+tl)/r; if (is_valid(r, c, tr, tl)) if (c-r < min) min = c-r; } } } if (min == 1000000) min = -1; return min; }