Advertisement
Guest User

Untitled

a guest
Jun 27th, 2021
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. typedef struct sprinker {
  2. int l;
  3. int r;
  4. } sprinkler;
  5.  
  6. public:
  7. int min_sprinklers(int gallery[], int n)
  8. {
  9. int freq[n];
  10. vector<sprinkler> vec;
  11. for(int i = 0; i < n; i++) freq[i] = 0;
  12. for(int i = 0 ; i < n; i++) {
  13. int x = gallery[i];
  14. if(x == -1) continue;
  15. int l = max(0, i - x);
  16. int r = min(n-1, i + x);
  17. sprinkler s;
  18. s.l = l;
  19. s.r = r;
  20. vec.push_back(s);
  21. for(int j = l; j <= r; j++) {
  22. freq[j]++;
  23. }
  24. }
  25.  
  26. for(int i = 0; i < n; i++) {
  27. if(freq[i] == 0) return -1;
  28. }
  29.  
  30. stable_sort(vec.begin(), vec.end(), [](sprinkler s1, sprinkler s2) { return s1.r-s1.l < s2.r-s2.l; });
  31.  
  32. int sprinklers = vec.size();
  33. for(int i = 0; i < vec.size(); i++) {
  34. int l = vec[i].l;
  35. int r = vec[i].r;
  36. bool flag = false;
  37. for(int j = l; j <= r; j++) {
  38. if(freq[j] == 1) {
  39. flag = true;
  40. break;
  41. }
  42. }
  43.  
  44. if(!flag) {
  45. for(int j = l; j <= r; j++) freq[j]--;
  46. sprinklers--;
  47. }
  48. }
  49.  
  50. return sprinklers;
  51. }
  52. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement