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
45
46
#include "cielib.h"

using namespace std;

const int R = podajR();

int find_dim(int* v, int d) {
    v[d] = R/2;
    czyCieplo(v);

    int left = 0;
    int right = R;

    while(true) {
        int mid = v[d];
        v[d] = left + ((mid-left)/2);
        int czy_lewo = czyCieplo(v);
        if (czy_lewo == 1) {
            right = mid;
            continue;
        }

        v[d] = mid;
        czyCieplo(v);
        v[d] = mid + ((right - mid)/2);
        int czy_prawo = czyCieplo(v);
        if (czy_prawo == 1) {
            left = mid;
            continue;
        }

        // !czy_lewo && !czy_prawo
        return v[d];
    }
}

int main() {
    const int D = podajD();
    int v[D];
    for(int d = 0; d < D; d++) v[d] = 0;

    for(int d = 0; d < D; d++) {
        v[d] = find_dim(v, d);
    }
    znalazlem(v);
}