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
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>

#include <algorithm>

#include "cielib.h"

int main() {
	srand(time(NULL));

	int d = podajD(), 
		k = podajK(),
		r = podajR();

	int cur[d];
	memset(cur, 0, sizeof(cur));
	int st[d], ed[d];
	memset(st, 0, sizeof(st));
	for (int i = 0; i < d; i++)
		ed[i] = r;

	czyCieplo(cur);
	k--;

	int wym = -1;
	while (k--) {
		if (++wym == d)
			wym = 0;

		if (st[wym] == ed[wym])
			continue;

		bool kier;
		if (cur[wym] == st[wym])
			kier = true;
		else if (cur[wym] == ed[wym])
			kier = false;
		else
			kier = rand() % 2;

		// w górę
		if (kier) {
			int odl = ed[wym];
			int dl;
			if (odl > 100)
				dl = odl/2 + ((rand() % 60) - 30);
			else
				dl = rand() % (odl) + 1;

			cur[wym] = dl;

			
			if (czyCieplo(cur)) {
			//
			//printf("g%d %d %d %d\n", wym, odl, dl, cur[wym]);
				st[wym] = cur[wym];
			}
		} else {
			int odl = r - st[wym];
			int dl;
			if (odl > 100)
				dl = odl/2 + ((rand() % 60) - 30);
			else
				dl = rand() % (odl) + 1;

			cur[wym] = dl;
			
			if (czyCieplo(cur)) {
			//printf("d%d %d %d %d\n", wym, odl, dl, cur[wym]);
				ed[wym] = cur[wym];
			}
		}
	}

	for (int i = 0; i < d; i++);
		//printf("%d ", cur[i]);
	//printf("\n");

	znalazlem(cur);
}