2013年11月12日 星期二

[UVA] 541 - Error Correction


#include<stdio.h>
int L[105],R[105],s[105][105];
int main(){
    int n,i,j,flag,I,J,add,x,y;
    while(scanf("%d",&n)!=EOF && n){
        for(i=0;i<n;i++)
            for(j=0;j<n;j++)
                scanf("%d",&s[i][j]);
        for(i=0;i<n;i++){
            L[i]=0;
            for(j=0;j<n;j++)
                L[i]+=s[i][j];
        }
        for(i=0;i<n;i++){
            R[i]=0;
            for(j=0;j<n;j++)
                R[i]+=s[j][i];
        }
        flag=1;
        for(i=0;i<n;i++)
            if(L[i]%2 || R[i]%2)
                flag=0;
        if(flag){
            puts("OK");
            continue;
        }
        for(add=0,i=0;i<n;i++)
            if(L[i]%2) add++,x=i;
        if(add>1){
            puts("Corrupt");
            continue;
        }
        for(add=0,i=0;i<n;i++)
            if(R[i]%2) add++,y=i;
        if(add>1){
            puts("Corrupt");
            continue;
        }
        printf("Change bit (%d,%d)\n",x+1,y+1);
    }
}

沒有留言:

張貼留言