#include "cielib.h"
int *tmp, *sL, *sH;
void findCord3(int d, int size)
{
while (size > 3)
{
int sizeToKeep = size / 2;
if (sizeToKeep == 2)
sizeToKeep = 3;
for (int i = 0; i < d; ++i)
{
tmp[i] = sL[i];
czyCieplo(tmp);
tmp[i] = sH[i];
int c1 = czyCieplo(tmp);
tmp[i] = sL[i];
int c2 = czyCieplo(tmp);
if (c1 == 1 && c2 == 0)
{
sL[i] = sH[i] - sizeToKeep + 1;
}
else if (c1 == 0 && c2 == 1)
{
sH[i] = sL[i] + sizeToKeep - 1;
}
else
{
sL[i] = sL[i] + size / 2 - sizeToKeep / 2 ;
sH[i] = sL[i] + sizeToKeep - 1;
}
tmp[i] = (sL[i] + sH[i]) / 2;
}
size = sizeToKeep;
}
for (int i = 0; i < d; ++i)
{
int ml = sL[i] + 1;
int mh = sH[i] - 1;
tmp[i] = sL[i];
czyCieplo(tmp);
tmp[i] = mh;
int c1 = czyCieplo(tmp);
tmp[i] = sH[i];
czyCieplo(tmp);
tmp[i] = ml;
int c2 = czyCieplo(tmp);
if (c1 == 1 && c2 == 0)
{
sL[i] = sH[i];
}
else if (c1 == 0 && c2 == 1)
{
sH[i] = sL[i];
}
else
{
sH[i] = mh;
sL[i] = mh;
}
tmp[i] = (sL[i] + sH[i]) / 2;
}
}
int main()
{
int d = podajD();
int k = podajK();
int r = podajR();
tmp = new int[d];
sH = new int[d];
sL = new int[d];
for (int i = 0; i < d; ++i)
{
sL[i] = 0;
sH[i] = r;
tmp[i] = r / 2;
}
findCord3(d, r + 1);
znalazlem(sL);
return 0;
}
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 | #include "cielib.h" int *tmp, *sL, *sH; void findCord3(int d, int size) { while (size > 3) { int sizeToKeep = size / 2; if (sizeToKeep == 2) sizeToKeep = 3; for (int i = 0; i < d; ++i) { tmp[i] = sL[i]; czyCieplo(tmp); tmp[i] = sH[i]; int c1 = czyCieplo(tmp); tmp[i] = sL[i]; int c2 = czyCieplo(tmp); if (c1 == 1 && c2 == 0) { sL[i] = sH[i] - sizeToKeep + 1; } else if (c1 == 0 && c2 == 1) { sH[i] = sL[i] + sizeToKeep - 1; } else { sL[i] = sL[i] + size / 2 - sizeToKeep / 2 ; sH[i] = sL[i] + sizeToKeep - 1; } tmp[i] = (sL[i] + sH[i]) / 2; } size = sizeToKeep; } for (int i = 0; i < d; ++i) { int ml = sL[i] + 1; int mh = sH[i] - 1; tmp[i] = sL[i]; czyCieplo(tmp); tmp[i] = mh; int c1 = czyCieplo(tmp); tmp[i] = sH[i]; czyCieplo(tmp); tmp[i] = ml; int c2 = czyCieplo(tmp); if (c1 == 1 && c2 == 0) { sL[i] = sH[i]; } else if (c1 == 0 && c2 == 1) { sH[i] = sL[i]; } else { sH[i] = mh; sL[i] = mh; } tmp[i] = (sL[i] + sH[i]) / 2; } } int main() { int d = podajD(); int k = podajK(); int r = podajR(); tmp = new int[d]; sH = new int[d]; sL = new int[d]; for (int i = 0; i < d; ++i) { sL[i] = 0; sH[i] = r; tmp[i] = r / 2; } findCord3(d, r + 1); znalazlem(sL); return 0; } |
English