#include<bits/stdc++.h> #include "cielib.h" using namespace std; int * search (int d, int * tmn, int * tmx) { int * ts; ts = new int[d]; // for(int i = 0; i < d; ++i) printf("%d %d\n", tmn[i], tmx[i]); printf("\n"); for(int i = 0; i < d; ++i) ts[i] = (tmn[i] + tmx[i]) / 2; czyCieplo(ts); for(int i = 0; i < d; ++i) if(ts[i] < tmx[i]) { ++ts[i]; if(czyCieplo(ts)) { tmn[i] = ts[i]; delete[] ts; return search(d, tmn, tmx); } --ts[i]; if(czyCieplo(ts)) { tmx[i] = ts[i]; delete[] ts; return search(d, tmn, tmx); } } for(int i = 0; i < d; ++i) if(ts[i] > tmn[i]) { --ts[i]; if(czyCieplo(ts)) { tmx[i] = ts[i]; delete[] ts; return search(d, tmn, tmx); } ++ts[i]; if(czyCieplo(ts)) { tmn[i] = ts[i]+1; delete[] ts; return search(d, tmn, tmx); } } return ts; } int main() { int d = podajD(), r = podajR(); int tmn[d], tmx[d]; for(int i = 0; i < d; ++i) { tmn[i] = 0; tmx[i] = r; } znalazlem(search(d, tmn, tmx)); }
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 | #include<bits/stdc++.h> #include "cielib.h" using namespace std; int * search (int d, int * tmn, int * tmx) { int * ts; ts = new int[d]; // for(int i = 0; i < d; ++i) printf("%d %d\n", tmn[i], tmx[i]); printf("\n"); for(int i = 0; i < d; ++i) ts[i] = (tmn[i] + tmx[i]) / 2; czyCieplo(ts); for(int i = 0; i < d; ++i) if(ts[i] < tmx[i]) { ++ts[i]; if(czyCieplo(ts)) { tmn[i] = ts[i]; delete[] ts; return search(d, tmn, tmx); } --ts[i]; if(czyCieplo(ts)) { tmx[i] = ts[i]; delete[] ts; return search(d, tmn, tmx); } } for(int i = 0; i < d; ++i) if(ts[i] > tmn[i]) { --ts[i]; if(czyCieplo(ts)) { tmx[i] = ts[i]; delete[] ts; return search(d, tmn, tmx); } ++ts[i]; if(czyCieplo(ts)) { tmn[i] = ts[i]+1; delete[] ts; return search(d, tmn, tmx); } } return ts; } int main() { int d = podajD(), r = podajR(); int tmn[d], tmx[d]; for(int i = 0; i < d; ++i) { tmn[i] = 0; tmx[i] = r; } znalazlem(search(d, tmn, tmx)); } |