#include #include #include using namespace std; int n,r,k; struct p{ int x,y; int sum; bool is_marked; }; bool cmp(p a,p b){return a.sum>b.sum;} bool is_in(int x,int y) { if(x>=0&&x=0&&y>n>>r>>k; int pole[n][n],q=0; p m[n*n],maxp; maxp.sum=0; for(int i=0;i>pole[i][j]; int s; for(int i=0;imaxs1){maxs1=m[(x+1)*y+a].sum; x1=x; y1=y+a;} if(is_in(x+a,y)&&m[(x+1+a)*y].sum>maxs1){maxs1=m[(x+1+a)*y].sum; x1=x+a; y1=y;} if(is_in(x-a,y)&&m[(x+1-a)*y].sum>maxs1){maxs1=m[(x+1-a)*y].sum; x1=x-a; y1=y;} if(is_in(x,y-a)&&m[(x+1)*y-a].sum>maxs1){maxs1=m[(x+1)*y-a].sum; x1=x; y1=y-a;} if(is_in(x+a,y+a)&&m[(x+1+a)*y+a].sum>maxs1){maxs1=m[(x+1+a)*y+a].sum; x1=x+a; y1=y+a;} if(is_in(x-a,y+a)&&m[(x+1-a)*y+a].sum>maxs1){maxs1=m[(x+1-a)*y+a].sum; x1=x-a; y1=y+a;} if(is_in(x+a,y-a)&&m[(x+1+a)*y-a].sum>maxs1){maxs1=m[(x+1+a)*y-a].sum; x1=x+a; y1=y-a;} if(is_in(x-a,y-a)&&m[(x+1-a)*y-a].sum>maxs1){maxs1=m[(x+1-a)*y-a].sum; x1=x-a; y1=y-a;} } m[(x1+1)*y1].is_marked=true; } fstream out("queens.out"); for(int i=0;i