# Untitled

Dec 7th, 2021
513
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
1. /* Question
2.
3. Brain Station-23 has a Robot! This Robot has a very special food habit. Dependending on a day of the week, It eats certain type of food:
4.
5. on Monday, Thursday and Sunday It eats black circuit boards;
6. on Tuesday and Saturday It eats red circuit boards;
7. on other days of week he eats green circuit boards.
8. BS-23 plans to go on an annual trip. This Robot takes a backpack which contains:
9.
10. a daily rations of black circuit boards;
11. b daily rations of red circuit boards;
12. c daily rations of green circuit boards.
13. BS-23 has to select such a day of the week to start that there robot can eat without additional food purchases as long as possible. If Bs-23 chooses the day of the week to start optimally, help them to find the maximum number of days the Robot can eat in a trip without additional food purchases.
14.
15. Input
16. The first line of the input contains three positive integers a, b and c — the number of daily rations of black circuit boards, red circuit boards and green circuit boards in Robot's backpack correspondingly.
17.
18. 1 ≤ a,b,c ≤7 * 108
19.
20. Output
21. Print the maximum number of days the Robot can eat in a trip without additional food purchases, if BS-23 chooses the day of the week to start his trip optimally.
22.
23. Examples
24. Input
25. 2 1 1
26. Output
27. 4
28. Input
29. 3 2 2
30. Output
31. 7
32. Input
33. 1 100 1
34. Output
35. 3
36. Input
37. 30 20 10
38. Output
39. 39
40. Note
41. In the first example the best day for start of the trip is Sunday. In this case, during Sunday and Monday the robot will eat black circuit board, during Tuesday — red circuit board and during Wednesday — green circuit board. So, after four days of the trip all food will be eaten.
42.
43. /*
44.
45.
46.
47. #include <bits/stdc++.h>
48. using namespace std;
49.
50. /*
51. Complexity: O(log n)
52. Idea: Binary search on number of day we can plan for trip.
53. And check if it is possible of not to trip for this many day if we start from all 7 days.
54. */
55.
56. long long x,y,z;
57. bool check(long long now)
58. {
59.     long long week = now/7;
60.     bool flag = false;
61.
62.     for(int i=0;i<7;i++)
63.     {
64.         long long b = x - week * 3, r = y - week * 2, g = z - week * 2;
65.         int idx = i;
66.         int remDay = now%7;
67.         while(remDay--){
68.             if(idx==0) r--;
69.             else if(idx==1) b--;
70.             else if(idx==2) b--;
71.             else if(idx==3) r--;
72.             else if(idx==4) g--;
73.             else if(idx==5) b--;
74.             else g--;
75.
76.             idx = (idx+1)%7;
77.         }
78.
79.         if(b>=0 and r>=0 and g>=0) flag = true;
80.     }
81.     return flag;
82. }
83.
84.
85. int main()
86. {
87.     cin >> x >> y >> z;
88.
89.     long long lo = 0, hi = 1e18, ans = -1;
90.     while(lo<=hi)
91.     {
92.         long long mid = (lo+hi)/2;
93.         if(check(mid)){
94.             ans = mid;
95.             lo = mid + 1;
96.         }
97.         else hi = mid - 1;
98.     }
99.     cout << ans;
100. }
RAW Paste Data