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
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <vector>
#include <array>

using namespace std;

typedef vector<int> VI;
typedef long long LL;
typedef pair<int,int> para;

#define FOR(x, b, e) for(int x = b; x <= (e); ++x)
#define FORD(x, b, e) for(int x = b; x >= (e); --x)
#define REP(x, n) for(int x = 0; x < (n); ++x)
#define VAR(v, n) __typeof(n) v = (n)
#define ALL(c) (c).begin(), (c).end()
#define SIZE(x) ((int)(x).size())
#define FOREACH(i, c) for(VAR(i, (c).begin()); i != (c).end(); ++i)
#define PB push_back
#define ST first
#define ND second
#define MP make_pair

#include "cielib.h"


int main() {
  int d = podajD();
	int r = podajR();
	int x0;
  int l[500], u[500], x[500];


  REP(i,d) {
    l[i]=0;
    u[i]=r;
    x[i]=r>>1;
  }

  if ((r&1)==false) goto LOOP;

  REP(i,d) {
    x0=x[i];

    x[i]=l[i];
    czyCieplo(x);
    x[i]=u[i];
    if (czyCieplo(x)) {
      l[i]++;
      x[i]=x0+1;
    }
    else {
      u[i]--;
      x[i]=x0;
    }
  }


LOOP:


  while (u[0]-l[0]>1) {
    bool b1,b2;

    REP(i,d) {
      x0=x[i];

      x[i]=u[i];
      czyCieplo(x);

      x[i]=l[i];
      b1= czyCieplo(x);
      if(b1) u[i]=x0-1;
      else {
        x[i]=u[i];
        b2= czyCieplo(x);
        if(b2) l[i]=x0+1;
        else {l[i]=x0; u[i]--;}
      }

      if ( (u[i]+l[i])&1 ) {
        if (u[i]<r) u[i]++;
        else l[i]--;
      }
      x[i]=(u[i]+l[i])/2;
    }
  }

  REP(i,d) {
    if (u[i]<r) {
      x[i]=u[i]+1;
      czyCieplo(x);
      x[i]=l[i];
      if (czyCieplo(x)==0) x[i]=u[i];
    }
    else {
      x[i]=l[i]-1;
      czyCieplo(x);
      x[i]=u[i];
      if (czyCieplo(x)==0) x[i]=l[i];
    }
  }

  znalazlem(x);
  return 0;
}