-
Notifications
You must be signed in to change notification settings - Fork 23
Expand file tree
/
Copy path1222.cpp
More file actions
60 lines (60 loc) · 1.68 KB
/
1222.cpp
File metadata and controls
60 lines (60 loc) · 1.68 KB
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include<iostream>
using namespace std;
int ab(int x)
{
return (x>0)?x:-x;
}
int main()
{
int n,i,j,t,k,c1,c2,a[8][8]={0},b[8][8]={0};
cin>>n;
for(i=1;i<=n;i++)
{
for(j=1;j<=5;j++)
for(k=1;k<=6;k++)
cin>>a[j][k];
cout<<"PUZZLE #"<<i<<endl;
c1=a[1][1]+a[1][2]+a[2][1];
c2=a[5][1]+a[5][2]+a[4][1];
for(b[1][1]=0;b[1][1]<=1;b[1][1]++)
for(b[1][2]=0;b[1][2]<=1;b[1][2]++)
for(b[1][3]=0;b[1][3]<=1;b[1][3]++)
for(b[5][1]=0;b[5][1]<=1;b[5][1]++)
for(b[5][2]=0;b[5][2]<=1;b[5][2]++)
for(b[5][3]=0;b[5][3]<=1;b[5][3]++)
{
if(ab(b[5][1]+b[5][3]-c2)%2!=ab(b[1][1]+b[1][3]-c1)%2) continue;
b[3][1]=ab(b[1][1]+b[1][3]-c1)%2;
b[2][1]=ab(a[1][1]-b[1][2]-b[1][1])%2;
b[4][1]=ab(a[5][1]-b[5][1]-b[5][2])%2;
b[2][2]=ab(a[1][2]-b[1][1]-b[1][3]-b[1][2])%2;
b[4][2]=ab(a[5][2]-b[5][1]-b[5][2]-b[5][3])%2;
b[3][2]=ab(a[3][1]-b[2][1]-b[3][1]-b[4][1])%2;
b[2][3]=ab(a[2][2]-b[1][2]-b[2][1]-b[3][2]-b[2][2])%2;
b[4][3]=ab(a[4][2]-b[5][2]-b[4][1]-b[3][2]-b[4][2])%2;
b[3][3]=ab(a[3][2]-b[4][2]-b[2][2]-b[3][2]-b[3][1])%2;
for(j=4;j<=6;j++)
for(k=1;k<=5;k++)
b[k][j]=ab(a[k][j-1]-b[k][j-2]-b[k][j-1]-b[k-1][j-1]-b[k+1][j-1])%2;
t=1;
for(j=1;j<=5;j++)
if((b[j][5]+b[j-1][6]+b[j+1][6]+b[j][6]-a[j][6])%2!=0)
{
t=0;
break;
}
if(t==1)
{
for(j=1;j<=5;j++)
{
for(k=1;k<=6;k++)
cout<<b[j][k]<<' ';
cout<<endl;
}
goto label;
}
}
label: c1++;
}
return 0;
}