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
#include "cielib.h"
#include <bits/stdc++.h>
using namespace std;
struct pd
{
    int L;
    int P;
};
pd mpd(int l, int p)
{
    pd h = {l, p};
    return h;
}
pd t[505];
bool odw[505];
int pozycja[505];
int main()
{
    int d, k, r;
//    cin >> d >> k >> r;
    d = podajD();
    k = podajK();
    r = podajR();
    int hd = 0;
    if(r%2 == 0)r++;
    for(int i = 0; i < d; i++){t[i].L = 2; t[i].P = r;}
    int licz = 0;
    czyCieplo(pozycja); k--;
    while(k--)
    {
        hd %= d;
        if(licz == d)
            break;
        if(odw[hd])continue;
        if((t[hd].P - t[hd].L) <= 1){licz++; odw[hd] = true; hd++; k++; continue;}
        if(t[hd].P == pozycja[hd])pozycja[hd] = t[hd].L;
        else pozycja[hd] = t[hd].P;
        if((t[hd].L + t[hd].P)%2 == 0)t[hd].P++;
        if(czyCieplo(pozycja))
        {
            if(pozycja[hd] == t[hd].P)t[hd].L = (t[hd].L + t[hd].P)/2;
            else if(pozycja[hd] == t[hd].L)t[hd].P = (t[hd].L + t[hd].P)/2;
        }
        hd++;
    }
    hd = 0;
    for(int i = 0; i < d; i++)
        {pozycja[i] = (t[i].L + t[i].P)/2;}
//    czyCieplo(pozycja);
//    k--;
//    while(k--)
//    {
//        if(t[hd].P == pozycja[hd])pozycja[hd] = t[hd].L;
//        else pozycja[hd] = t[hd].P;
//        if(czyCieplo(pozycja))
//        {
//            break;
//        }
//        hd++; hd %= d;
//    }
    znalazlem(pozycja);
}
//        for(int i = 0; i < d; i++)
//            cout << t[hd].L << " " << t[hd].P << " |" << pozycja[i] << "| ";
//        cout << endl;
//        cin >> poz;
//    cout << "znalazlem" << endl;
//    for(int i = 0; i < d; i++)
//        cout << pozycja[i] << " ";