#include <iostream> #include "cielib.h" using namespace std; int d,k,r,p,l,x,sr,y,naj; int pusta[500]; int odp[500]; int ja[500]; bool czy[500]; int main(){ d=podajD(); r=podajR(); czyCieplo(pusta); for(int i=0;i<d;i++){ ja[i]=r; } if(!czyCieplo(ja)){ naj=r; for(int j=0;j<d;j++){ l=0; p=d-1; while(l<p){ sr=(l+p)/2; for(int i=0;i<d;i++){ if(i<=sr and i>=l and !czy[i]) ja[i]=0; else if(!czy[i]) ja[i]=1; } czyCieplo(ja); for(int i=l;i<=sr;i++){ if(!czy[i]) ja[i]=1; } if(czyCieplo(ja)) p=sr; else l=sr+1; } x=l; l=0; p=naj; while(l+1<p){ czyCieplo(pusta); sr=(p+l)/2; for(int i=0;i<d;i++){ if(!czy[i]) ja[i]=sr; } if(czyCieplo(ja)) l=sr; else p=sr; } ja[x]=l; czy[x]=1; naj=ja[x]; pusta[x]=l; } y=ja[x]/2; for(int i=0;i<d;i++){ odp[i]=ja[i]-y; } znalazlem(odp); } else{ naj=0; for(int i=0;i<d;i++){ pusta[i]=r; } for(int j=0;j<d;j++){ l=0; p=d-1; while(l<p){ sr=(l+p)/2; for(int i=0;i<d;i++){ if(i<=sr and i>=l and !czy[i]) ja[i]=r; else if(!czy[i]) ja[i]=r-1; } czyCieplo(ja); for(int i=l;i<=sr;i++){ if(!czy[i]) ja[i]=r-1; } if(czyCieplo(ja)) p=sr; else l=sr+1; } x=l; l=naj; p=r; while(l+1<p){ czyCieplo(pusta); sr=(p+l)/2; for(int i=0;i<d;i++){ if(!czy[i]) ja[i]=sr; } if(czyCieplo(ja)) p=sr; else l=sr; } ja[x]=p; czy[x]=1; naj=ja[x]; pusta[x]=p; } y=(r-ja[x])/2; for(int i=0;i<d;i++){ odp[i]=ja[i]+y; } znalazlem(odp); } }
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 110 111 112 113 114 115 116 117 | #include <iostream> #include "cielib.h" using namespace std; int d,k,r,p,l,x,sr,y,naj; int pusta[500]; int odp[500]; int ja[500]; bool czy[500]; int main(){ d=podajD(); r=podajR(); czyCieplo(pusta); for(int i=0;i<d;i++){ ja[i]=r; } if(!czyCieplo(ja)){ naj=r; for(int j=0;j<d;j++){ l=0; p=d-1; while(l<p){ sr=(l+p)/2; for(int i=0;i<d;i++){ if(i<=sr and i>=l and !czy[i]) ja[i]=0; else if(!czy[i]) ja[i]=1; } czyCieplo(ja); for(int i=l;i<=sr;i++){ if(!czy[i]) ja[i]=1; } if(czyCieplo(ja)) p=sr; else l=sr+1; } x=l; l=0; p=naj; while(l+1<p){ czyCieplo(pusta); sr=(p+l)/2; for(int i=0;i<d;i++){ if(!czy[i]) ja[i]=sr; } if(czyCieplo(ja)) l=sr; else p=sr; } ja[x]=l; czy[x]=1; naj=ja[x]; pusta[x]=l; } y=ja[x]/2; for(int i=0;i<d;i++){ odp[i]=ja[i]-y; } znalazlem(odp); } else{ naj=0; for(int i=0;i<d;i++){ pusta[i]=r; } for(int j=0;j<d;j++){ l=0; p=d-1; while(l<p){ sr=(l+p)/2; for(int i=0;i<d;i++){ if(i<=sr and i>=l and !czy[i]) ja[i]=r; else if(!czy[i]) ja[i]=r-1; } czyCieplo(ja); for(int i=l;i<=sr;i++){ if(!czy[i]) ja[i]=r-1; } if(czyCieplo(ja)) p=sr; else l=sr+1; } x=l; l=naj; p=r; while(l+1<p){ czyCieplo(pusta); sr=(p+l)/2; for(int i=0;i<d;i++){ if(!czy[i]) ja[i]=sr; } if(czyCieplo(ja)) p=sr; else l=sr; } ja[x]=p; czy[x]=1; naj=ja[x]; pusta[x]=p; } y=(r-ja[x])/2; for(int i=0;i<d;i++){ odp[i]=ja[i]+y; } znalazlem(odp); } } |