#include using namespace std; #define mp make_pair #define MAXN 205 #define MAXV 55 int MAXVALUE; int n,r,k,uk_fields; int uk_values[MAXV],board_value[MAXN][MAXN]; int br_queens,uk_napada,br_napada[MAXN][MAXN]; int curr_sum,curr_res; int res,br_queens_res; pair placed_queens[MAXN*MAXN],res_queens[MAXN*MAXN]; struct BoardField { int value,uk_sum,num_values[MAXV]; pair ind; } board[MAXN*MAXN]; bool unutra(int x, int y) { return (x>=0 && x=0 && y %d %d -> %d\n", i, j, board[uk_fields].value); uk_fields++; } } } int sortColor; bool sortByColor(BoardField a, BoardField b) { if (a.num_values[sortColor] > b.num_values[sortColor]) return true; if (a.num_values[sortColor] < b.num_values[sortColor]) return false; if (a.uk_sum > b.uk_sum) return true; return false; } bool sortByValue(BoardField a, BoardField b) { if (a.value > b.value) return true; return false; } void resetQueens() { int i,j,c; for(i=0; i %d -> %d %d\n", C, curr_sum, maxfreq); curr_res = curr_sum * maxfreq; if (curr_res > res) { updRes(); } } void greedyByValue() { int i; resetQueens(); sort(board, board+uk_fields, sortByValue); uk_napada = 0; for(i=0; i res) { updRes(); } } int main() { int i,j; FILE *fin = fopen("queens.in", "r"); fscanf(fin,"%d%d%d", &n, &r, &k); for(i=0; i