Submission #7451312


Source Code Expand

//minamoto
#include<bits/stdc++.h>
#define R register
#define fp(i,a,b) for(R int i=(a),I=(b)+1;i<I;++i)
#define fd(i,a,b) for(R int i=(a),I=(b)-1;i>I;--i)
#define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)
template<class T>inline bool cmax(T&a,const T&b){return a<b?a=b,1:0;}
template<class T>inline bool cmin(T&a,const T&b){return a>b?a=b,1:0;}
using namespace std;
const int P=1e9+7;
inline void upd(R int &x,R int y){(x+=y)>=P?x-=P:0;}
inline int add(R int x,R int y){return x+y>=P?x+y-P:x+y;}
inline int dec(R int x,R int y){return x-y<0?x-y+P:x-y;}
inline int mul(R int x,R int y){return 1ll*x*y-1ll*x*y/P*P;}
int ksm(R int x,R int y){
	R int res=1;
	for(;y;y>>=1,x=mul(x,x))(y&1)?res=mul(res,x):0;
	return res;
}
const int N=505;
char s[N][N];int fa[N],sz[N],bin[N],n,m,res;
inline int find(R int x){return fa[x]==x?x:fa[x]=find(fa[x]);}
void ck(){
	if(n&1){
		R int c=(n+1)>>1,fl=1;
		fp(j,1,m)if(s[c][j]!=s[c][m-j+1]){fl=0;break;}
		if(!fl)res*=2;
	}
	if(m&1){
		R int r=(m+1)>>1,fl=1;
		fp(i,1,n)if(s[i][r]!=s[n-i+1][r]){fl=0;break;}
		if(!fl)res*=2;
	}
}
int fac[15],st[15],top;
bool ck(R int i,R int j){
	top=0;
	st[++top]=s[i][j];
	st[++top]=s[n-i+1][j];
	st[++top]=s[i][m-j+1];
	st[++top]=s[n-i+1][m-j+1];
	sort(st+1,st+1+top);
	R int sum=1;
	for(R int l=1,r=1;l<=top;l=r){
		while(r<=top&&st[r]==st[l])++r;
		sum*=fac[r-l];
	}
	sum=24/sum,res=mul(res,sum==24?12:sum);
	return sum==24;
}
int main(){
//	freopen("testdata.in","r",stdin);
	scanf("%d%d",&n,&m),res=1;
	fp(i,1,n)scanf("%s",s[i]+1);
	ck();
	fp(i,1,(n>>1)+(m>>1))fa[i]=i,sz[i]=1;
	bin[0]=1;fp(i,1,(n>>1)+(m>>1))bin[i]=mul(bin[i-1],2);
	fac[0]=1;fp(i,1,4)fac[i]=fac[i-1]*i;
	fp(i,1,n>>1)fp(j,1,m>>1)
		if(ck(i,j)){
			R int u=find(i),v=find((n>>1)+j);
			if(u!=v)fa[u]=v,sz[v]+=sz[u];
		}
	fp(i,1,(n>>1)+(m>>1))if(find(i)==i)res=mul(res,bin[sz[i]-1]);
	printf("%d\n",res);
	return 0;
}

Submission Info

Submission Time
Task I - Reverse Grid
User Minamoto
Language C++14 (GCC 5.4.1)
Score 1900
Code Size 1937 Byte
Status AC
Exec Time 2 ms
Memory 384 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:53:27: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d%d",&n,&m),res=1;
                           ^
./Main.cpp:54:29: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
  fp(i,1,n)scanf("%s",s[i]+1);
                             ^

Judge Result

Set Name sample all
Score / Max Score 0 / 0 1900 / 1900
Status
AC × 2
AC × 39
Set Name Test Cases
sample sample-01.txt, sample-02.txt
all sample-01.txt, sample-02.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt, 01-25.txt, 01-26.txt, 01-27.txt, 01-28.txt, 01-29.txt, 01-30.txt, 01-31.txt, 01-32.txt, 01-33.txt, 01-34.txt, 01-35.txt, sample-01.txt, sample-02.txt
Case Name Status Exec Time Memory
01-01.txt AC 1 ms 256 KB
01-02.txt AC 1 ms 256 KB
01-03.txt AC 1 ms 256 KB
01-04.txt AC 1 ms 256 KB
01-05.txt AC 1 ms 256 KB
01-06.txt AC 1 ms 256 KB
01-07.txt AC 1 ms 256 KB
01-08.txt AC 1 ms 384 KB
01-09.txt AC 1 ms 384 KB
01-10.txt AC 2 ms 384 KB
01-11.txt AC 2 ms 384 KB
01-12.txt AC 2 ms 384 KB
01-13.txt AC 2 ms 384 KB
01-14.txt AC 1 ms 256 KB
01-15.txt AC 1 ms 384 KB
01-16.txt AC 2 ms 384 KB
01-17.txt AC 2 ms 384 KB
01-18.txt AC 2 ms 384 KB
01-19.txt AC 2 ms 384 KB
01-20.txt AC 2 ms 384 KB
01-21.txt AC 2 ms 384 KB
01-22.txt AC 1 ms 256 KB
01-23.txt AC 2 ms 256 KB
01-24.txt AC 2 ms 384 KB
01-25.txt AC 2 ms 384 KB
01-26.txt AC 2 ms 384 KB
01-27.txt AC 1 ms 256 KB
01-28.txt AC 1 ms 256 KB
01-29.txt AC 1 ms 384 KB
01-30.txt AC 1 ms 256 KB
01-31.txt AC 2 ms 384 KB
01-32.txt AC 2 ms 384 KB
01-33.txt AC 2 ms 384 KB
01-34.txt AC 2 ms 384 KB
01-35.txt AC 2 ms 384 KB
sample-01.txt AC 1 ms 256 KB
sample-02.txt AC 1 ms 256 KB