// Cuenta las soluciones de N reinas y escribe la primera.
#include <stdio.h>
#include <stdlib.h>

#include "queens.h"

#define MAX_N 12

int main(int argc, char *argv[]) {
    int n = 0;
    char extra[2];

    if (argc != 2 || sscanf(argv[1], "%2d%1s", &n, extra) != 1 || n < 1 || n > MAX_N) {
        printf("uso: %s n, con n entre 1 y %d\n", argv[0], MAX_N);
        return 1;
    }

    long nodes = 0;
    long solutions = queens_count(n, &nodes);
    if (solutions < 0) {
        printf("no hay memoria\n");
        return 1;
    }
    printf("%d reinas: %ld soluciones, %ld nodos\n", n, solutions, nodes);

    int columns[MAX_N];
    long first_nodes = 0;
    if (queens_first(n, columns, &first_nodes) == 1) {
        printf("la primera, en %ld nodos:", first_nodes);
        for (int row = 0; row < n; row++) {
            printf(" %d", columns[row]);
        }
        printf("\n");
    }
    return 0;
}
