QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#117358 | #6309. Aqre | aakennes | WA | 1ms | 3580kb | C++14 | 2.3kb | 2023-07-01 02:00:20 | 2023-07-01 02:00:21 |
Judging History
answer
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
#define ll long long
using namespace std;
const int maxn=1e3+50,INF=0x3f3f3f3f;
int n,m,a[25][5][5],b[4][5]={{},{0,1,1,1,0},{0,1,0,1,1},{0,1,1,1,0}},c[5],ans[10][10],num,vis[9][9],kx[4]={0,1,0,-1},ky[4]={1,0,-1,0};
void DFS(int key,int x,int y,int maxx,int maxy){
if(x<1||x>maxx||y<1||y>maxy)return;
num++;vis[x][y]=1;
for(int i=0;i<4;++i){
int xx=x+kx[i],yy=y+ky[i],nowx=xx,nowy=yy;
if(xx>=5)xx-=4;
if(yy>=5)yy-=4;
if(a[key][xx][yy]&&!vis[nowx][nowy])DFS(key,nowx,nowy,maxx,maxy);
}
}
void Init(){
for(int i=1;i<=4;++i)c[i]=i;
int tot=0;
do{
++tot;
for(int i=1;i<=4;++i){
for(int j=1;j<=4;++j){
a[tot][i][j]=c[i]!=j;
}
}
}while(next_permutation(c+1,c+5));
for(int i=4;i<=7;++i){
for(int j=4;j<=7;++j){
for(int p=1;p<=tot;++p){
num=0;
memset(vis,0,sizeof(vis));
if(a[p][1][1])DFS(p,1,1,i,j);
else DFS(p,1,2,i,j);
/*for(int x=1;x<=4;++x){
for(int y=1;y<=4;++y){
cout<<a[p][x][y];
}
cout<<endl;
}
cout<<num<<endl;*/
if(num==i*j-i*j/4){
ans[i%4][j%4]=p;goto End;
}
}
End:;
/*cout<<i<<" "<<j<<" : "<<endl;
for(int x=1;x<=i;++x){
for(int y=1;y<=j;++y){
cout<<a[ans[i%4][j%4]][x>4?x-4:x][y>4?y-4:y];
}
cout<<endl;
}
cout<<endl;*/
}
}
}
int main() {
//freopen("1.in","r",stdin);
Init();
int T;scanf("%d",&T);
while(T--){
cin>>n>>m;
if(n>3){
printf("%d\n",n*m-n*m/4);
for(int x=1;x<=n;++x){
for(int y=1;y<=m;++y){
printf("%d ",a[ans[n%4][m%4]][x%4?x%4:4][y%4?y%4:4]);
}
puts("");
}
}else{
if(n<=3&&m<=3){
printf("%d\n",n*m);
for(int x=1;x<=n;++x){
for(int y=1;y<=m;++y){
printf("1 ");
}
puts("");
}
}else{
if(n<m){
if(n==3&&m%4==3)printf("%d\n",n*m-n*m/4+1);
else printf("%d\n",n*m-n*m/4);
for(int x=1;x<=n;++x){
for(int y=1;y<=m;++y){
printf("%d ",b[x%4?x%4:4][y%4?y%4:4]);
}
puts("");
}
}else{
if(m==3&&n%4==3)printf("%d\n",n*m-n*m/4+1);
else printf("%d\n",n*m-n*m/4);
for(int x=1;x<=m;++x){
for(int y=1;y<=n;++y){
printf("%d ",b[y%4?y%4:4][x%4?x%4:4]);
}
puts("");
}
}
}
}
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 3580kb
input:
3 2 2 3 4 3 8
output:
4 1 1 1 1 9 1 1 1 0 1 0 1 1 1 1 1 0 18 1 1 1 0 1 1 1 0 1 0 1 1 1 0 1 1 1 1 1 0 1 1 1 0
result:
wrong answer Length must be equal to m (test case 1)