File tree 1 file changed +54
-0
lines changed
Interview Bit/Binary Search
1 file changed +54
-0
lines changed Original file line number Diff line number Diff line change
1
+ bool isValid (vector<int > C, int max_painters, int mid)
2
+ {
3
+ int painter=1 ;
4
+ long long int sum=0 ;
5
+
6
+ for (int i=0 ;i<C.size ();i++)
7
+ {
8
+ sum+=C[i];
9
+ if (sum>mid)
10
+ {
11
+ sum=C[i];
12
+ painter++;
13
+ }
14
+
15
+ if (painter>max_painters)
16
+ return false ;
17
+ }
18
+ return true ;
19
+ }
20
+
21
+ int Solution::paint (int A, int B, vector<int > &C) {
22
+
23
+ int n=C.size ();
24
+ if (A>n)
25
+ A=n;
26
+
27
+ int start=-1 ;
28
+ long long int end=0 ;
29
+
30
+ int i;
31
+ for (i=0 ;i<n;i++)
32
+ {
33
+ start=max (start,C[i]);
34
+ end+=C[i];
35
+ }
36
+ long long int res=-1 ;
37
+ while (start<=end)
38
+ {
39
+ long long int mid=start+(end-start)/2 ;
40
+
41
+ if (isValid (C,A,mid)==true )
42
+ {
43
+ res=mid;
44
+ end=mid-1 ;
45
+ }
46
+ else
47
+ start=mid+1 ;
48
+ }
49
+
50
+ return (int )((res*B)%10000003 );
51
+
52
+
53
+ }
54
+
You can’t perform that action at this time.
0 commit comments