#include #include #include #include #include using namespace std; #define MAXN 512 struct sortable { int x; int y; long long val; }; int n,k,r; int ma3x[MAXN][MAXN]; sortable pc[MAXN*MAXN]; bool queens[MAXN][MAXN]; stack< pair < int, int > > placed_queens; int cnt=0; bool cust(sortable a, sortable b) { return a.val>b.val; } bool cust2(sortable a, sortable b) { return a.val>n>>r>>k; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) cin >> ma3x[i][j]; } //freopen("/dev/stdin/", "r", stdin); } long long precompute(int x, int y) { //cout<<"hello, precomputing for "< numbers; vector count_arr; // up left down right diag for( a=0;a<=2*r;a++ ) { i = x-r + a; j = y-r + a; if(i>0&&j>0&&i<=n&&j<=n) { sum+=ma3x[i][j]; bool found=0; for(b=0;b0&&j>0&&i<=n&&j<=n) { sum+=ma3x[i][j]; bool found=0; for(b=0;b0&&j>0&&i<=n&&j<=n) { sum+=ma3x[i][j]; bool found=0; for(b=0;b0&&j>0&&i<=n&&j<=n) { sum+=ma3x[i][j]; bool found=0; for(b=0;bmaxc) maxc=count_arr[i]; long long ret = sum * maxc; //cout<<" for "<b.val*(k-x2); if(x1=b.val) return true; if(x1==x2) return a.val>b.val; return x1 > queens_max = placed_queens; clear_queens(); unsigned long long ssw=get_config2(); //cout<maxans) { queens_max=placed_queens; maxans=ssw; } clear_queens(); if(n<50) ssw = get_config3(); if(ssw>maxans) { queens_max=placed_queens; maxans=ssw; } //cout<