#include "cielib.h" #include <iostream> #include <math.h> using namespace std; int main() { int pos[500]={}; int searchR=podajR(); for(int d=0;d<podajD();d++){ //int index=0; //pos[i]+=searchR; //searchR/=2; //int prevval=0; //int dir=1; int k=0; while(searchR>=1){ k++; czyCieplo(pos); for(int i=0;i<podajD();i++){ if(i+1!=d) pos[i]+=searchR; else pos[i]-=searchR; } //cout<<" {"; for(int j=0;j<podajD();j++){ cout<<pos[j]<<","; } //cout<<"}"; int val=czyCieplo(pos); for(int i=0;i<podajD();i++){ if(i+1!=d) pos[i]-=searchR; else pos[i]+=searchR; } if(val==1){ for(int i=0;i<podajD();i++){ if(i+1!=d) pos[i]+=(searchR+1)/2; else pos[i]-=(searchR+1)/2; } } //cout<<" "<<aa<<" "<<(val==1)<<" "<<k<<" {"; for(int j=0;j<podajD();j++){ cout<<pos[j]<<","; } searchR/=2; //cout<<"} "; /*k++; pos[i]+=searchR*dir; int val=czyCieplo(pos); if(val==1){ if(podajR()%2==1){ pos++; } } searchR/=2; if() dir*=-1; prevval=val;*/ } if(d!=podajD()-1){ for(int i=0;i<podajD();i++){ if(i+1!=d) pos[i]+=1; else pos[i]-=1; } bool inbet=czyCieplo(pos)==0; for(int i=0;i<podajD();i++){ if(i+1!=d) pos[i]-=1; else pos[i]+=1; } inbet=inbet&&czyCieplo(pos)==0; //cout<<"inbet: "<<inbet; searchR=podajR()-fabs((pos[d]+(inbet?0.5:0)-((double)podajR()/(double)2)))*2; //cout<<"final: "<<searchR<<pos[0]<<" "<<pos[1]; for(int i=0;i<podajD();i++){ if(i==d) pos[i]+=searchR/2; else{ pos[i]-=searchR/2; } } if(inbet){ pos[d+1]++; } //cout<<"final: "<<searchR<<pos[0]<<" "<<pos[1]<<" "<<pos[2]; } } znalazlem(pos); 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 | #include "cielib.h" #include <iostream> #include <math.h> using namespace std; int main() { int pos[500]={}; int searchR=podajR(); for(int d=0;d<podajD();d++){ //int index=0; //pos[i]+=searchR; //searchR/=2; //int prevval=0; //int dir=1; int k=0; while(searchR>=1){ k++; czyCieplo(pos); for(int i=0;i<podajD();i++){ if(i+1!=d) pos[i]+=searchR; else pos[i]-=searchR; } //cout<<" {"; for(int j=0;j<podajD();j++){ cout<<pos[j]<<","; } //cout<<"}"; int val=czyCieplo(pos); for(int i=0;i<podajD();i++){ if(i+1!=d) pos[i]-=searchR; else pos[i]+=searchR; } if(val==1){ for(int i=0;i<podajD();i++){ if(i+1!=d) pos[i]+=(searchR+1)/2; else pos[i]-=(searchR+1)/2; } } //cout<<" "<<aa<<" "<<(val==1)<<" "<<k<<" {"; for(int j=0;j<podajD();j++){ cout<<pos[j]<<","; } searchR/=2; //cout<<"} "; /*k++; pos[i]+=searchR*dir; int val=czyCieplo(pos); if(val==1){ if(podajR()%2==1){ pos++; } } searchR/=2; if() dir*=-1; prevval=val;*/ } if(d!=podajD()-1){ for(int i=0;i<podajD();i++){ if(i+1!=d) pos[i]+=1; else pos[i]-=1; } bool inbet=czyCieplo(pos)==0; for(int i=0;i<podajD();i++){ if(i+1!=d) pos[i]-=1; else pos[i]+=1; } inbet=inbet&&czyCieplo(pos)==0; //cout<<"inbet: "<<inbet; searchR=podajR()-fabs((pos[d]+(inbet?0.5:0)-((double)podajR()/(double)2)))*2; //cout<<"final: "<<searchR<<pos[0]<<" "<<pos[1]; for(int i=0;i<podajD();i++){ if(i==d) pos[i]+=searchR/2; else{ pos[i]-=searchR/2; } } if(inbet){ pos[d+1]++; } //cout<<"final: "<<searchR<<pos[0]<<" "<<pos[1]<<" "<<pos[2]; } } znalazlem(pos); return 0; } |