// Michal Orawiec // Cieplo-zimno #include "cielib.h" const int MAX_D = 505; int r, d, k; int l[MAX_D]; // wlacznie int p[MAX_D]; // wlacznie int tmp[MAX_D]; int tmp2[MAX_D]; int main() { r = podajR(); d = podajD(); k = podajK(); for (int i = 0; i < d; i++) { l[i] = 0; p[i] = r; tmp[i] = tmp2[i] = r / 2; } for (int i = 1; i <= 40; i++) for (int j = 0; j < d; j++) { if (l[j] < p[j]) { if ((p[j] - l[j]) % 2 == 1) { if (l[j] != 0) l[j]--; else if (p[j] != r) p[j]++; } int s = (l[j] + p[j]) / 2; tmp[j] = tmp2[j] = l[j]; czyCieplo(tmp); tmp[j] = p[j]; int czyBlizej = czyCieplo(tmp); if (czyBlizej) l[j] = s + 1; else { int czyBlizej2 = czyCieplo(tmp2); if (czyBlizej2 && (p[j] - l[j]) % 2 == 1) p[j] = s; else if (czyBlizej2) p[j] = s - 1; else if ((p[j] - l[j]) % 2 == 0) { l[j] = p[j] = s; } } tmp[j] = tmp2[j] = (l[j] + p[j]) / 2; } } znalazlem(l); 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 | // Michal Orawiec // Cieplo-zimno #include "cielib.h" const int MAX_D = 505; int r, d, k; int l[MAX_D]; // wlacznie int p[MAX_D]; // wlacznie int tmp[MAX_D]; int tmp2[MAX_D]; int main() { r = podajR(); d = podajD(); k = podajK(); for (int i = 0; i < d; i++) { l[i] = 0; p[i] = r; tmp[i] = tmp2[i] = r / 2; } for (int i = 1; i <= 40; i++) for (int j = 0; j < d; j++) { if (l[j] < p[j]) { if ((p[j] - l[j]) % 2 == 1) { if (l[j] != 0) l[j]--; else if (p[j] != r) p[j]++; } int s = (l[j] + p[j]) / 2; tmp[j] = tmp2[j] = l[j]; czyCieplo(tmp); tmp[j] = p[j]; int czyBlizej = czyCieplo(tmp); if (czyBlizej) l[j] = s + 1; else { int czyBlizej2 = czyCieplo(tmp2); if (czyBlizej2 && (p[j] - l[j]) % 2 == 1) p[j] = s; else if (czyBlizej2) p[j] = s - 1; else if ((p[j] - l[j]) % 2 == 0) { l[j] = p[j] = s; } } tmp[j] = tmp2[j] = (l[j] + p[j]) / 2; } } znalazlem(l); return 0; } |