#include #include #include #include #include #include #include using namespace std; int table[200][200]/** въведената таблица*/,brnapoleta[51]/** брой на полетата от съотвените числа в таблицата*/; int sb/** сбора за съответната клетка*/,tablesums[200][200]/** суми за съответната клетка*/,max1/**максимален брой числа*/; int sortedtables[40000]/**сортираните суми*/,used[200][200]/**използвани полета*/,brc=1/**брой сегашни царици*/; int know/**сегашно K*/,lastresult,queensmoving,b,i1,j2; bool tablenow[200][200]; int n,r,k; int cmp(int x,int y) { return x > y; } int find_war() { for(int i=0; i=max(i-r,0) && j2>=max(j-r,0); i1--,j2--) { if(used[i1][j2])know++; } ///горен десен for(i1=i-1,j2=j+1; i1>=max(i-r,0) && j2<=min(j+r,n-1); i1--,j2++) { if(used[i1][j2])know++; } ///долен десен for(i1=i+1,j2=j+1; i1<=min(i+r,n-1) && j2<=min(j+r,n-1); i1++,j2++) { if(used[i1][j2])know++; } ///долен ляв for(i1=i+1,j2=j-1; i1<=min(i+r,n-1) && j2>=max(j-r,0); i1++,j2--) { if(used[i1][j2])know++; } } } } int main() { cin>>n>>r>>k; for(int i=0; i>table[i][j]; ///определяне на точките за всяка клетка for(int i=0; i=max(i-r,0) && j2>=max(j-r,0); i1--,j2--) { brnapoleta[table[i1][j2]]++; sb+=table[i1][j2]; //table[i1][j2]=0; // cout<<"ok"; } ///горен десен for(i1=i-1,j2=j+1; i1>=max(i-r,0) && j2<=min(j+r,n-1); i1--,j2++) { brnapoleta[table[i1][j2]]++; sb+=table[i1][j2]; //table[i1][j2]=0; } ///долен десен for(i1=i+1,j2=j+1; i1<=min(i+r,n-1) && j2<=min(j+r,n-1); i1++,j2++) { brnapoleta[table[i1][j2]]++; sb+=table[i1][j2]; //table[i1][j2]=0; } ///долен ляв for(i1=i+1,j2=j-1; i1<=min(i+r,n-1) && j2>=max(j-r,0); i1++,j2--) { brnapoleta[table[i1][j2]]++; sb+=table[i1][j2]; //table[i1][j2]=0; } for(int a=1; a<=50; a++) { if(brnapoleta[a]>max1) max1=brnapoleta[a]; brnapoleta[a]=0; } tablesums[i][j]=max1*sb; // cout<k) { sb=0; know=0; for(int i=0; i=n*n?brc:brc+b); a++) for(int i=0; i=n*n) { b=0; queensmoving++; if(queensmoving==brc) break; } } brc++; if(sbk) { sb=0; know=0; for(int i=0; i=n*n?brc:brc+b); a++) for(int i=0; i=n*n) { b=0; queensmoving++; if(queensmoving==brc) break; } } // cout<