Cod sursa(job #1438455)

Utilizator tudortarniceruTudor Tarniceru tudortarniceru Data 19 mai 2015 23:13:41
Problema Problema Damelor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.6 kb
#include <fstream>
using namespace std;
ifstream fin("damesah.in");
ofstream fout("damesah.out");
int n, i, j, k, l, m;
int poz, minn;
int var, nr, sol;
int p[15];
int main() {
    fin >> n;
    for (i = 1; i <= n; ++i) {
        p[i] = i;
    }
    do {
        poz = n;
        while (p[poz] < p[poz - 1] && poz > 1) {
            poz--;
        }
        poz--;
        if (poz) {
            minn = p[poz + 1];
            j = poz + 1;
            for (i = poz + 1; i <= n; ++i) {
                if (minn > p[i] && p[i] > p[poz]) {
                    minn = p[i];
                    j = i;
                }
            }
            k = p[poz];
            p[poz] = p[j];
            p[j] = k;
            for (i = 1; i <= (n - poz) / 2; ++i) {
                k = p[poz + i];
                p[poz + i] = p[n - i + 1];
                p[n - i + 1] = k;
            }
            var = 1;
            for (i = 1; i <= n; ++i) {
                for (j = i + 1; j <= n; ++j) {
                    nr = j - i;
                    if (p[i] == p[j] + nr || p[i] == p[j] - nr) {
                        var = 2;
                        j = n + 10;
                        i = n + 10;
                    }
                }
            }
            if (var == 1) {
                sol++;
                if (sol == 1) {
                    for (i = 1; i <= n; ++i) {
                        fout << p[i] << ' ';
                    }
                }
            }
        }
    }
    while (poz);
    fout << '\n';
    fout << sol;
    fout.close();
    return 0;
}