Cod sursa(job #2449638)

Utilizator voyagerSachelarie Bogdan voyager Data 20 august 2019 12:40:32
Problema Problema Damelor Scor 70
Compilator py Status done
Runda Arhiva educationala Marime 0.76 kb
#!/usr/bin/env python3

import sys
sys.stdout = open('damesah.out', 'w')

with open('damesah.in', 'r') as f:
    N = int(next(line for line in f if line.strip()))

    v, d1, d2, sol, num, first = [False] * N, [False] * N * 2, [False] * N * 2, [0] * N, 0, None
    
    def solve(i, c):
        global first
        if i == N:
            if not first: first = ' '.join(str(x + 1) for x in sol)
            return c == 0
        sol[i] = c
        if v[c]: return 0
        if d1[i-c]: return 0
        if d2[2*N-i-c-1]: return 0

        v[c] = d1[i-c] = d2[2*N-i-c-1] = True
        cnt = sum(solve(i + 1, c) for c in range(N))
        v[c] = d1[i-c] = d2[2*N-i-c-1] = False
        return cnt

    cnt = sum(solve(0, c) for c in range(N))
    
    print(first)
    print(cnt)