hiho week 57 register

Ended

Participants:308

Verdict:Accepted
Score:100 / 100
Submitted:2015-08-02 13:40:50

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cmath>
using namespace std;
const int n=5,m=6,f=30;
char s[10][10];
int a[35][35];
int main(){
    for(int i=1;i<=n;++i)scanf("%s",s[i]+1);
    for(int i=1;i<=n;++i)
        for(int j=1;j<=m;++j){
            int t=(i-1)*m+j;
            if(i>1)a[t][(i-2)*m+j]=1;
            if(j>1)a[t][(i-1)*m+j-1]=1;
            if(i<n)a[t][i*m+j]=1;
            if(j<m)a[t][(i-1)*m+j+1]=1;
            a[t][(i-1)*m+j]=1;
            if(s[i][j]=='0')a[t][f+1]=1;
        }
    for(int i=1;i<=f;++i){
        int r=i;
        for(int j=i;j<=f;++j)if(a[j][i]){r=j; break; }
        if(r!=i)for(int j=i;j<=f+1;++j)swap(a[r][j],a[i][j]);
        if(!a[i][i])continue;
        for(int j=i+1;j<=f;++j)
        if(a[j][i]) for(int k=i;k<=f+1;++k)a[j][k]^=a[i][k];
    }
    for(int i=f;i>=1;--i)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX