Madiyar

Untitled

Jan 12th, 2013
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.18 KB | None | 0 0
  1. #include <vector>
  2. #include <cstring>
  3. #include <list>
  4. #include <map>
  5. #include <set>
  6. #include <queue>
  7. #include <deque>
  8. #include <stack>
  9. #include <bitset>
  10. #include <algorithm>
  11. #include <functional>
  12. #include <numeric>
  13. #include <utility>
  14. #include <sstream>
  15. #include <iostream>
  16. #include <iomanip>
  17. #include <cstdio>
  18. #include <cmath>
  19. #include <cstdlib>
  20. #include <ctime>
  21.  
  22. using namespace std;
  23.  
  24. #define f first
  25. #define s second
  26. #define mp make_pair
  27. #define pb push_back
  28. #define pii pair<int, int>
  29. #define vi vector<int>
  30. #define all(v) (v).begin(), (v).end()
  31. #define forit(it,v) for (typeof(v.begin()) it = v.begin(); it != v.end(); ++it)
  32. #define ll long long
  33.  
  34. int cur[10000];
  35. class TomekPhone {
  36.     public:
  37.     int minKeystrokes(vector <int> cnt, vector <int> key) {
  38.         sort(all(cnt));
  39.         reverse(all(cnt));
  40.        
  41.         int j = 0;
  42.        
  43.         for (int i = 0; i < key.size(); ++i)
  44.             cur[i] = 1;
  45.  
  46.         int ans = 0;
  47.         forit(it, cnt) {
  48.        
  49.             int pos = -1;
  50.            
  51.             for (int i = 0; i < key.size(); ++i)
  52.                 if (cur[i] <= key[i] && (pos == -1 || cur[pos] > cur[i])) {
  53.                     pos = i;
  54.                 }  
  55.  
  56.             if (pos == -1) return -1;
  57.  
  58.             ans += cur[pos] * (*it);
  59.             cur[pos]++;
  60.         }
  61.         return ans;
  62.     }
  63. };
Advertisement
Add Comment
Please, Sign In to add comment