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

Общий форум

Why do I get WA? Can anyone help me?
Послано Matei Gruber 10 мар 2002 16:27
I used the gaussian elimination method, to solve this system (mod 2).
I don't know why i'm getting WA.

Here is my source code:

/* 1042 - Central heating */

#include <stdio.h>

int A[200][201];
int X[200];
int i, j, k, N;

int read( void );
int gaus( void );
int main( void ) {

    #ifndef ONLINE_JUDGE
        freopen( "1042.in","rt",stdin );
        freopen( "1042.out","wt",stdout );
    #endif

    read();
    gaus();

    for( i = N - 1; i >= 0; i-- ) {

        k = 0;
        for( j = i + 1; j < N; j++ )
            k += A[i][j] * X[j];
        X[i] = (A[i][N] + (k & 1)) & 1;
    }

    return( 0 );
}

int read( void ) {

    memset( A, 0, sizeof(A) );

    scanf( "%d", &N );
    for( i = 0; i < N; i++ ) {
        while( 1 ) {

            scanf( "%d", &j );
            if( j == -1 ) break;

            A[--j][i] = 1;
        }

        A[i][N] = 1;
    }

    return( 0 );
}

int gaus( void ) {

    #define swap(i, j) i = j ^ i ^ (j = i)

    for( i = 0; i < N - 1; i++ ) {
        if( !A[i][i] )
            for( j = i + 1; j < N; j++ )
                if( A[j][i] ) {

                    for( k = i; k <= N; k++ )
                        swap( A[i][k],
A[j][k] );
                    break;
                }

        for( j = i + 1; j < N; j++ )
            if( A[j][i] )
                for( k = 0; k <= N; k++ )
                    A[j][k] = (A[i][k] +
A[j][k]) & 1;
    }
}