#include using namespace std; typedef struct Punct{ int x, y, val; }; Punct detDiag(Punct st, Punct dr) { Punct mij; mij.x= (st.x+dr.x)/2; mij.y = (st.y + dr.y)/2; cout<>mij.val; if(st.x == dr.x && st.y == dr.y) return mij; if(mij.val==0) return mij; if(mij.val<0) { mij.x++; mij.y++; return detDiag(mij, dr); } else return detDiag(st, mij); } Punct cautare(Punct st, Punct dt) { Punct x; if(dt.x-st.x < dt.y-st.y) { Punct dts; dts.y=st.y+ dt.x-st.x; dts.x = dt.x; x = detDiag(st, dts); } else if(dt.x-st.x > dt.y-st.y) { Punct dts; dts.x=st.x+ dt.y-st.y; dts.y = dt.y; x = detDiag(st, dts); } else x = detDiag(st, dt); if(x.val==0) return x; if(x.x == st.x && x.y == st.y) return x; if(x.x == dt.x && x.y == dt.y) return x; Punct st1, st2, dr1, dr2; if(x.val <0) { x.x++; x.y++; } st1.x = st.x; st1.y = x.y; dr1.x = x.x - 1; dr1.y = dt.y; st2.x = x.x; st2.y = st.y; dr2.x = dt.x; dr2.y = x.y - 1; x = cautare (st1, dr1); if(x.val==0) return x; x = cautare(st2, dr2); return x; } int main() { int N=4; Punct st, dr; st.x = st.y = 0; dr.x = dr.y = N-1; cautare(st, dr); return 0; }