#include "cielib.h" using namespace std; bool czy_juz_mozna_przestac(int pierwsza[], int druga[], int petla) { for(int i = 0; i < petla; i++) { if(pierwsza[i] != druga[i]) { return 0; } } return 1; } int main() { int wymiary = podajD(); int r = podajR(); int poczatek[wymiary]; for(int i = 0; i < wymiary; i++) { poczatek[i] = 0; } int robocza[wymiary]; for(int i = 0; i < wymiary; i++) { robocza[i] = 0; } int koniec[wymiary]; for(int i = 0; i < wymiary; i++) { koniec[i] = r; } while(true) { if(czy_juz_mozna_przestac(poczatek, koniec, wymiary) == 1) { znalazlem(robocza); } else { for(int i = 0; i < wymiary; i++) { if(poczatek[i] != koniec[i]) { robocza[i] = koniec[i]; if(czyCieplo(robocza) == 1) { if(koniec[i] - poczatek[i] == 1) { poczatek[i] = koniec[i]; } else if((koniec[i] - poczatek[i]) % 2 == 0) { poczatek[i] = (poczatek[i] + koniec[i]) / 2; } else { poczatek[i] = (poczatek[i] + koniec[i] - 1) / 2; } robocza[i] = poczatek[i]; czyCieplo(robocza); } else { robocza[i] = poczatek[i]; if(koniec[i] - poczatek[i] == 1) { koniec[i] = poczatek[i]; } if(czyCieplo(robocza) == 1) { if((koniec[i] - poczatek[i]) % 2 == 0) { koniec[i] = (poczatek[i] + koniec[i]) / 2; } else { koniec[i] = (poczatek[i] + koniec[i] + 1) / 2; } } else { if(koniec[i] - poczatek[i] == 2) { koniec[i] = koniec[i] - 1; poczatek[i] = poczatek[i] + 1; } } } } } } } 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 99 100 101 102 103 104 105 106 107 108 109 | #include "cielib.h" using namespace std; bool czy_juz_mozna_przestac(int pierwsza[], int druga[], int petla) { for(int i = 0; i < petla; i++) { if(pierwsza[i] != druga[i]) { return 0; } } return 1; } int main() { int wymiary = podajD(); int r = podajR(); int poczatek[wymiary]; for(int i = 0; i < wymiary; i++) { poczatek[i] = 0; } int robocza[wymiary]; for(int i = 0; i < wymiary; i++) { robocza[i] = 0; } int koniec[wymiary]; for(int i = 0; i < wymiary; i++) { koniec[i] = r; } while(true) { if(czy_juz_mozna_przestac(poczatek, koniec, wymiary) == 1) { znalazlem(robocza); } else { for(int i = 0; i < wymiary; i++) { if(poczatek[i] != koniec[i]) { robocza[i] = koniec[i]; if(czyCieplo(robocza) == 1) { if(koniec[i] - poczatek[i] == 1) { poczatek[i] = koniec[i]; } else if((koniec[i] - poczatek[i]) % 2 == 0) { poczatek[i] = (poczatek[i] + koniec[i]) / 2; } else { poczatek[i] = (poczatek[i] + koniec[i] - 1) / 2; } robocza[i] = poczatek[i]; czyCieplo(robocza); } else { robocza[i] = poczatek[i]; if(koniec[i] - poczatek[i] == 1) { koniec[i] = poczatek[i]; } if(czyCieplo(robocza) == 1) { if((koniec[i] - poczatek[i]) % 2 == 0) { koniec[i] = (poczatek[i] + koniec[i]) / 2; } else { koniec[i] = (poczatek[i] + koniec[i] + 1) / 2; } } else { if(koniec[i] - poczatek[i] == 2) { koniec[i] = koniec[i] - 1; poczatek[i] = poczatek[i] + 1; } } } } } } } return 0; } |