ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1334. Шашки

May be anyone will tell me what's wrong with this?
Послано Vladimir Milenov Vasilev 20 ноя 2005 19:52
I read all the topics in the forum, but it doesn't seem serious to me the tests to be wrong - I thing, the problem is in me...So here is my program - if anyone has a little time, could  have a look at it - Wrong answer on test2....

#include <iostream.h>
#include <stdio.h>

int a[8][8],i,j;

int wins1(char x,char y, int id)
{
    if ((x <= 'a') || (x >= 'h') || (y <= '1') || (y >= '8')) return 0;
    if (a[x-'a'-1][y-'1'-1]+a[x-'a'+1][y-'1'+1]==2*(1-id)+1) return 1;
    if (a[x-'a'-1][y-'1'+1]+a[x-'a'+1][y-'1'-1]==2*(1-id)+1) return 1;
    return 0;
}

int wins(char x,char y, int id)
{
    if (x < 'a' || x > 'h' || y < '1' || y > '8') return 0;
    if ((x >= 'c') && (y >= '3') && (a[x-'a'-1][y-'1'-1]==2*(1-id)+1) && (a[x-'a'-2][y-'1'-2]==0)) return 1;
    if ((x >= 'c') && (y <= '6') && (a[x-'a'-1][y-'1'+1]==2*(1-id)+1) && (a[x-'a'-2][y-'1'+2]==0)) return 1;
    if ((x <= 'f') && (y >= '3') && (a[x-'a'+1][y-'1'-1]==2*(1-id)+1) && (a[x-'a'+2][y-'1'-2]==0)) return 1;
    if ((x <= 'f') && (y <= '6') && (a[x-'a'+1][y-'1'+1]==2*(1-id)+1) && (a[x-'a'+2][y-'1'+2]==0)) return 1;
    return 0;
}

int main()
{
    char s[222], p[222];
    p[0] = 'a'-1;
    p[1] = '1'-1;
    for(i = 0; i < 8; i++)
        for (j = 0; j < 8; j++)
            a[i][j] = 0;
    for (i = 0; i < 32; i++)
    {
        gets(s);
        if (s[0] >='A' && s[0] <= 'Z') s[0] = s[0]-'A'+'a';
        a[s[0]-'a'][s[1]-'1'] = 2*(i%2)+1;
        if (wins(p[0],p[1],1-(i%2)) == 1)
        {     cout<<i+1<<endl;
            return 0;
        }
        if (wins1(s[0],s[1],(i%2)) == 1)
        {
            cout<<i+1<<endl;
            return 0;
        }
        p[0] = s[0];
        p[1] = s[1];
        p[2] = s[2];
    }
    cout << "Draw" << endl;
    return 0;
}