iscsi

SRM 489 D2 500 BuyingFlowers

Aug 26th, 2011
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.96 KB | None | 0 0
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <sstream>
  4. #include <string>
  5. #include <vector>
  6. #include <queue>
  7. #include <set>
  8. #include <map>
  9. #include <cstdio>
  10. #include <cstdlib>
  11. #include <cctype>
  12. #include <cmath>
  13. using namespace std;
  14. typedef long long LL;
  15. #define FOR(k,a,b) for(int k(a); k < (b); ++k)
  16. #define REP(k,a) for(int k=0; k < (a); ++k)
  17.  
  18.  
  19. class BuyingFlowers {
  20. public:
  21.     int buy(vector <int> roses, vector <int> lilies) {
  22.         vector<int> bestChoice(320001,20000000);
  23.         REP(i,320001)
  24.         {
  25.             for(int j=1;j*j<=i;++j)
  26.                 if(!(i%j))
  27.                 {
  28.                     bestChoice[i]=(i/j-j);
  29.                 }
  30.         }
  31.         int res=-1;
  32.         int n=roses.size();
  33.         FOR(i,1,1<<n)
  34.         {
  35.             int roseNum=0,LilNum=0;
  36.             REP(j,n)
  37.             {
  38.                 if(1<<j & i)
  39.                 {
  40.                     roseNum+=roses[j];
  41.                     LilNum+=lilies[j];
  42.                 }
  43.             }
  44.             if(abs(roseNum-LilNum)<2 && (bestChoice[roseNum+LilNum]<res || res==-1))
  45.             {
  46.                 res=bestChoice[roseNum+LilNum];
  47.             }
  48.         }
  49.         return res;
  50.     }
  51.  
  52. };
Advertisement
Add Comment
Please, Sign In to add comment