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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include "cielib.h"
#include <vector>
#include <stdio.h>

using namespace std;
int sol[1000];
int cur[1000];

int d, r;

void solve_dim(int dim, int begin, int end)
{
    //printf("ENTER: %d %d\n", begin, end);
    if (end - begin < 7)
    {
        //Do it one by one
        cur[dim] = begin;
        czyCieplo(cur);

        for (int i=begin + 1;i<=end;++i)
        {
            cur[dim] = i;
            if (!czyCieplo(cur))
            {
                //printf("HERE: %d %d\n", dim, i);
                sol[dim] = i - 1;
                i = end;
            }
        }

        if (sol[dim] == 0)
            sol[dim] = end;

        cur[dim] = 0;
        return;
    }

    int a1 = begin + (end - begin) / 3;
    int a2 = begin + 2 * (end - begin) / 3;

    //printf("TRYING: %d %d %d %d\n", begin, a1, a2, end);

    cur[dim] = a1;
    czyCieplo(cur);

    cur[dim] = a2;
    if(czyCieplo(cur))
        solve_dim(dim, (a1 + a2) / 2 + 1, end);
    else
        solve_dim(dim, begin, (a1 + a2) / 2);
}

int main()
{
    //k = podajK();
    r = podajR();
    d = podajD();

    /*while(true)
    {
        int x[3];
        int y[3];

        for (int i=0;i<3;++i)
            scanf("%d", &x[i]);

        for (int i=0;i<3;++i)
            scanf("%d", &y[i]);

        czyCieplo(x);
        printf("%d\n", czyCieplo(y));
    }*/

    for (int i=0;i<d;++i)
    {
        sol[i] = 0;
        cur[i] = 0;
    }

    for (int i=0;i<d;++i)
    {
        solve_dim(i, 0, r);
    }

    znalazlem(sol);

    return 0;
}