Cod sursa(job #1427431)

Utilizator justaddcodeJustadd Code justaddcode Data 2 mai 2015 11:28:39
Problema Dame Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <cstdio>
#include <algorithm>
#include <cstring>
#define Nmax 1002
using namespace std;
int n, i, j, l, p, q, nr;
bool a[Nmax][Nmax];
struct nod
{
    int x;
    int y;
}sol[Nmax];
void marc(int p, int q)
{
    int i, j;
    for (i = 1; i <= n; ++i)
    {
        a[i][q] = 1;
        a[p][i] = 1;
    }
    i = p;
    j = q;
    while (i && j)
    {
        a[i][j] = 1;
        --i; --j;
    }

    i = p;
    j = q;
    while (i <= n && j <= n)
    {
        a[i][j] = 1;
        ++i; ++j;
    }

    i = p;
    j = q;
    while (i <= n && j)
    {
        a[i][j] = 1;
        ++i; --j;
    }

    i = p;
    j = q;
    while (i && j <= n)
    {
        a[i][j] = 1;
        --i; ++j;
    }
}
int main()
{
    freopen("dame.in", "r", stdin);
    freopen("dame.out", "w", stdout);
    scanf("%d", &n);
    p = 1; q = n/2;
    sol[++ nr].x = p;
    sol[nr].y = q;
    marc(p, q);
    l = 1;
    while (l < n)
    {
        ++l;
        for (i = 1; i <= n; ++i)
        if (!a[l][i])
        {
            p = l;
            q = i;
            sol[++ nr].x = p;
            sol[nr].y = q;
            break;
        }
        marc(p, q);
    }
    printf("%d\n", nr);
    for (i = 1; i <= nr; ++i)
    printf("%d %d\n", sol[i].x, sol[i].y);
    return 0;
}