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
#include<bits/stdc++.h>
#include "cielib.h"
using namespace std;

bitset<501> rev;

int d = podajD();
//int t[d];
int r = podajR();
int k = podajK();

int x(int i,int a){
    if(rev[i]) return r-a;
    return a;
}


int main() {
    int t[d];
	int maks=0;
    if(d!=1){
	for(int i = 0; i < d; ++i) {
		t[i] = r/2;
	}
	for(int i=0;i<d;i++){
        t[i] = 0;
        czyCieplo(t);
        t[i] = 1;
        if(czyCieplo(t)){
            t[i]=r/2+1;
        }else{
            t[i]=r;
            czyCieplo(t);
            t[i]--;
            if(czyCieplo(t)){
                t[i]=r/2-1;
            }
        }
	}
	for(int i=0;i<d;i++){
        int tmp1=t[i];
        t[i] = 0;
        czyCieplo(t);
        t[i] = 1;
        if(!czyCieplo(t)){
            rev[i]=1;
        }
        t[i]=tmp1;
	}
	for(int i=0;i<d;i++){
        int a=0,b=r,m;
        while(a<b){
            m=(a+b)/2;
            t[i]=x(i,m);
            czyCieplo(t);
            t[i]=x(i,m+1);
            if(czyCieplo(t)){
                a=m+1;
            }else{
                b=m;
            }
            t[i]=x(i,a);
        }
        maks=max(maks,a);
	}
    }else{
        t[0]=0;
        maks=0;
    }
	//znalazlem(t);
	int a=0,b=r-maks,m;
	//cout<<"a,b = "<<a<<","<<b<<endl;
	while(a<b){
        m=(a+b)/2;
        //int v=2*m-a;
        for(int i=0;i<d;i++){
            t[i]=x(i,x(i,t[i])+a);
        }
        czyCieplo(t);
        for(int i=0;i<d;i++){
            t[i]=x(i,x(i,t[i])+b-a);
        }
        if(czyCieplo(t)){
            for(int i=0;i<d;i++){
                t[i]=x(i,x(i,t[i])-b);
            }
            a=m+1;
        }else{
            for(int i=0;i<d;i++){
                t[i]=x(i,x(i,t[i])-b);
            }
            b=m;
        }
        //cout<<"a,b = "<<a<<","<<b<<endl;
	}
	for(int i=0;i<d;i++){
        t[i]=x(i,x(i,t[i])+a);
    }
	znalazlem(t);
	///*/
}