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
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include <iostream>
#include "cielib.h"
using namespace std;
int tab[1002], pocz[1002], kon[1002];
int main()
{
    ios_base::sync_with_stdio(0);
    int d=podajD(), k=podajK(), r=podajR(), il=d;
    for (int i=0; i<d; i++)
    {
    	tab[i]=r/2;
    	pocz[i]=0;
    	kon[i]=r;
    }
    if (r==2)
    	il=0;
    while (il>0)
    {
    	//cout << il << "\n";
	    for (int i=0; i<d; i++)
	    {
	    	//cout << i << " " << pocz[i] << " " << kon[i] << "\n";
	    	if (kon[i]<=pocz[i]+2)
	    		continue;
	        int s=(pocz[i]+kon[i])/2;
	        tab[i]=pocz[i];
	        int c=czyCieplo(tab);
	        tab[i]=kon[i];
	        c=czyCieplo(tab);
	        if (c==1)
	        {
        		pocz[i]=s+1;
        		tab[i]=(pocz[i]+kon[i])/2;
        		if (pocz[i]+2>=kon[i])
        			il--;
        		continue;
			}
			tab[i]=pocz[i];
			c=czyCieplo(tab);
			if (c==1)
			{
				if ((pocz[i]+kon[i])%2==1)
				{
					kon[i]=s;
					tab[i]=(pocz[i]+kon[i])/2;
				}
				else
				{
					kon[i]=s-1;
					tab[i]=(pocz[i]+kon[i])/2;
				}
			}
			else
			{
				if ((pocz[i]+kon[i])%2==1)
				{
					pocz[i]=s;
					kon[i]=s+1;
					if (s+1<r)
						kon[i]++;
					else
						pocz[i]--;
					tab[i]=(pocz[i]+kon[i])/2;
				}
				else
				{
					pocz[i]=s;
					kon[i]=s;
					tab[i]=s;
				}
			}
			if (pocz[i]+2>=kon[i])
        		il--;
	    }
	}
	for (int i=0; i<d; i++)
    {
    	//cout << i << " " << pocz[i] << " " << kon[i] << "\n";
    	if (kon[i]==pocz[i])
    		continue;
        int s=(pocz[i]+kon[i])/2;
        tab[i]=pocz[i];
        int c=czyCieplo(tab);
        tab[i]=kon[i];
        c=czyCieplo(tab);
        if (c==1)
        {
    		pocz[i]=s+1;
    		tab[i]=(pocz[i]+kon[i])/2;
    		continue;
		}
		tab[i]=pocz[i];
		c=czyCieplo(tab);
		if (c==1)
		{
			if ((pocz[i]+kon[i])%2==1)
			{
				kon[i]=s;
				tab[i]=(pocz[i]+kon[i])/2;
			}
			else
			{
				kon[i]=s-1;
				tab[i]=(pocz[i]+kon[i])/2;
			}
		}
		else
		{
			//cout << s << "\n";
			if ((pocz[i]+kon[i])%2==1)
			{
				pocz[i]=s;
				kon[i]=s+1;
				if (s+1<r)
					kon[i]++;
				else
					pocz[i]--;
			}
			else
			{
				pocz[i]=s;
				kon[i]=s;
			}
			tab[i]=(pocz[i]+kon[i])/2;
		}
    }
    znalazlem(tab);
    return 0;
}