-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathzad18_pxl.c
44 lines (39 loc) · 892 Bytes
/
zad18_pxl.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include<stdio.h>
int suf(int x, int d){
if(x % d == 0)
return x / d;
return x / d + 1;
}
int potrzebne(int m[], int size, int d){ //ile slupow jest potrzebne, by odl byla d
int min = m[0], x = 0, c = m[0], ct = 0;
for(int i = 0; i < size; i++) if(m[i] < c) c = m[i];
for(int i = 0; i < size; i++){
if(m[i] < min)
min = m[i];
if(suf(x + 1, d) * c <= min){
x++;
}else{
x = 1;
min = m[i];
ct++;
}
}
return ct;
}
int most(int m[], int size, int k){
int p = 1, q = size, mid;
while(p < q){
mid = (p + q) / 2;
if(potrzebne(m, size, mid) > k)
p = mid + 1;
else
q = mid;
}
return p;
}
int main(){
int t[] = {3, 5, 8, 4, 2, 3, 5, 7};
int n = 8;
printf("%i\n", most(t, n, 1));
return 0;
}