Cod sursa(job #2437068)

Utilizator IulianOleniucIulian Oleniuc IulianOleniuc Data 8 iulie 2019 12:46:25
Problema Problema Damelor Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <vector>
#include <fstream>
#include <algorithm>

using std::vector;
using std::next_permutation;

std::ifstream fin("damesah.in");
std::ofstream fout("damesah.out");

inline int abs(int x) {
    return x < 0 ? -x : x;
}

int main() {
    int n; fin >> n;
    vector<int> perm(n + 1);

    for (int i = 1; i <= n; i++)
        perm[i] = i;

    int cnt = 0;
    vector<int> sol;

    do {
        bool ok = true;
        for (int i = 1; i < n; i++)
            for (int j = i + 1; j <= n; j++)
                if (abs(i - j) == abs(perm[i] - perm[j])) {
                    ok = false;
                    break;
                }
        if (ok) {
            cnt++;
            if (sol.empty())
                sol = perm;
        }
    } while (next_permutation(perm.begin() + 1, perm.end()));

    for (int i = 1; i <= n; i++)
        fout << sol[i] << ' ';
    fout << '\n' << cnt << '\n';

    fout.close();
    return 0;
}