提出 #48193657
ソースコード 拡げる
#include<bits/stdc++.h>
#include<atcoder/modint>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
typedef long double ldb;
typedef atcoder::modint998244353 mint;
#define rep(i,l,r) for(int i(l);i<=(r);++i)
#define per(i,r,l) for(int i(r);i>=(l);--i)
#define eb emplace_back
#define File(filename) freopen(filename ".in","r",stdin),freopen(filename ".out","w",stdout)
#ifdef EXODUS
#define Debug(...) fprintf(stderr,__VA_ARGS__)
#else
#define Debug(...) 0
#endif
//=========================================================================================================
// Something about IO
template<typename T>
void read(T &x){
x=0;T flg=1;
char ch=getchar();
while(!isdigit(ch)){if(ch=='-')flg=-1;ch=getchar();}
while(isdigit(ch))x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
x*=flg;
}
template<typename T,typename... Args>
void read(T &x,Args &...args){read(x),read(args...);}
//=========================================================================================================
// Define the global variables here.
bool membg=0;
constexpr int N=2e3+7;
int n,m;
char s[N][N];
int yr[N],yl[N],sum[N][N],all;
bool memed=0;
//=========================================================================================================
// Code here.
void solve(){
read(n,m);
rep(i,1,n)scanf("%s",s[i]+1);
rep(i,1,n)rep(j,1,m)
if(s[i][j]=='Y')sum[i][j]++,yr[i]++,yl[j]++,all++;
rep(i,1,n)rep(j,1,m)sum[i][j]+=sum[i][j-1];
rep(j,1,m)rep(i,1,n)sum[i][j]+=sum[i-1][j];
auto ask=[&](int u,int d,int l,int r){return sum[d][r]-sum[u-1][r]-sum[d][l-1]+sum[u-1][l-1];};
if(!all||(all&1))return printf("0\n"),void();
all>>=1;mint ans=0;
for(int a=1,b;a<=n;a++){
if(all%a)continue;b=all/a;
if(b>m)continue;
// printf("===%d %d===\n",a,b);
basic_string<int>row{1},line{1};
mint cR=1,cL=1;
for(int i=1,j=1;i<=n;i=j){
int cur=0;
while(j<=n&&cur<2*b)cur+=yr[j],j++;
int free=1;
while(j<=n&&yr[j]==0)free++,j++;
row+=j;if(j<=n)cR*=free;
}
for(int i=1,j=1;i<=m;i=j){
int cur=0;
while(j<=m&&cur<2*a)cur+=yl[j],j++;
int free=1;
while(j<=m&&yl[j]==0)free++,j++;
line+=j;if(j<=m)cL*=free;
}
// for(auto x:row)printf("%d ",x);printf("\n");
// for(auto x:line)printf("%d ",x);printf("\n");
for(int i=0;i<a;i++)
for(int j=0;j<b;j++)
if(ask(row[i],row[i+1]-1,line[j],line[j+1]-1)!=2)
goto there;
ans+=cR*cL;
there:;
}
printf("%d\n",ans.val());
return;
}
//=========================================================================================================
int main(){
Debug("%.3lfMB\n",fabs(&memed-&membg)/1024.0/1024.0);
int timbg=clock();
int T=1;
while(T--)solve();
int timed=clock();
Debug("%.3lfs\n",1.0*(timed-timbg)/CLOCKS_PER_SEC);
fflush(stdout);
return 0;
}
提出情報
提出日時
2023-12-04 21:16:01+0900
問題
D - YY Garden
ユーザ
EXODUS
言語
C++ 20 (gcc 12.2)
得点
600
コード長
2913 Byte
結果
AC
実行時間
51 ms
メモリ
23580 KiB
コンパイルエラー
Main.cpp: In function ‘void solve()’:
Main.cpp:64:17: warning: this ‘if’ clause does not guard... [-Wmisleading-indentation]
64 | if(all%a)continue;b=all/a;
| ^~
Main.cpp:64:35: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘if’
64 | if(all%a)continue;b=all/a;
| ^
Main.cpp: In function ‘int main()’:
Main.cpp:19:28: warning: statement has no effect [-Wunused-value]
19 | #define Debug(...) 0
| ^
Main.cpp:101:9: note: in expansion of macro ‘Debug’
101 | Debug("%.3lfMB\n",fabs(&memed-&membg)/1024.0/1024.0);
| ^~~~~
Main.cpp:19:28: warning: statement has no effect [-Wunused-value]
19 | #define Debug(...) 0
| ^
Main.cpp:106:9: note: in expansion of macro ‘Debug’
106 | Debug("%.3lfs\n",1.0*(timed-timbg)/CLOCKS_PER_SEC);
| ^~~~~
Main.cpp:102:13: warning: unused variable ‘timbg’ [-Wunused-variable]
102 | int timbg=clock();
| ^~~~~
Main.cpp:105:13: warning: unused variable ‘timed’ [-Wunused-variable]
105 | int timed=clock();
| ^~~~~
Main.cpp: In function ‘void solve()’:
Main.cpp:55:24: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
55 | rep(i,1,n)scanf("%s",s[i]+1);
| ~~~~~^~~~~~~~~~~~~
ジャッジ結果
セット名
Sample
All
得点 / 配点
0 / 0
600 / 600
結果
セット名
テストケース
Sample
00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt
All
00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt, 01-001.txt, 01-002.txt, 01-003.txt, 01-004.txt, 01-005.txt, 01-006.txt, 01-007.txt, 01-008.txt, 01-009.txt, 01-010.txt, 01-011.txt, 01-012.txt, 01-013.txt, 01-014.txt, 01-015.txt, 01-016.txt, 01-017.txt, 01-018.txt, 01-019.txt, 01-020.txt, 01-021.txt, 01-022.txt, 01-023.txt, 01-024.txt, 01-025.txt, 01-026.txt, 01-027.txt, 01-028.txt, 01-029.txt, 01-030.txt, 01-031.txt, 01-032.txt, 01-033.txt, 01-034.txt, 01-035.txt, 01-036.txt, 01-037.txt, 01-038.txt, 01-039.txt, 01-040.txt, 01-041.txt, 01-042.txt, 01-043.txt, 01-044.txt, 01-045.txt, 01-046.txt, 01-047.txt, 01-048.txt, 01-049.txt, 01-050.txt, 01-051.txt, 01-052.txt, 01-053.txt, 01-054.txt, 01-055.txt, 01-056.txt, 01-057.txt, 01-058.txt, 01-059.txt
ケース名
結果
実行時間
メモリ
00-sample-001.txt
AC
1 ms
3740 KiB
00-sample-002.txt
AC
1 ms
3684 KiB
00-sample-003.txt
AC
1 ms
3892 KiB
01-001.txt
AC
1 ms
3752 KiB
01-002.txt
AC
1 ms
3680 KiB
01-003.txt
AC
1 ms
3644 KiB
01-004.txt
AC
1 ms
3736 KiB
01-005.txt
AC
1 ms
3688 KiB
01-006.txt
AC
1 ms
3688 KiB
01-007.txt
AC
1 ms
3688 KiB
01-008.txt
AC
38 ms
23484 KiB
01-009.txt
AC
38 ms
23484 KiB
01-010.txt
AC
1 ms
3772 KiB
01-011.txt
AC
39 ms
23352 KiB
01-012.txt
AC
2 ms
4308 KiB
01-013.txt
AC
37 ms
23380 KiB
01-014.txt
AC
40 ms
23368 KiB
01-015.txt
AC
41 ms
23388 KiB
01-016.txt
AC
44 ms
23520 KiB
01-017.txt
AC
1 ms
3892 KiB
01-018.txt
AC
38 ms
23504 KiB
01-019.txt
AC
2 ms
4508 KiB
01-020.txt
AC
38 ms
23364 KiB
01-021.txt
AC
40 ms
23504 KiB
01-022.txt
AC
43 ms
23320 KiB
01-023.txt
AC
48 ms
23496 KiB
01-024.txt
AC
51 ms
23172 KiB
01-025.txt
AC
1 ms
3740 KiB
01-026.txt
AC
1 ms
3792 KiB
01-027.txt
AC
38 ms
23304 KiB
01-028.txt
AC
1 ms
3872 KiB
01-029.txt
AC
1 ms
3836 KiB
01-030.txt
AC
39 ms
23444 KiB
01-031.txt
AC
1 ms
3920 KiB
01-032.txt
AC
8 ms
16016 KiB
01-033.txt
AC
8 ms
16028 KiB
01-034.txt
AC
1 ms
4168 KiB
01-035.txt
AC
2 ms
4508 KiB
01-036.txt
AC
38 ms
23348 KiB
01-037.txt
AC
2 ms
4368 KiB
01-038.txt
AC
2 ms
4808 KiB
01-039.txt
AC
38 ms
23304 KiB
01-040.txt
AC
23 ms
15220 KiB
01-041.txt
AC
43 ms
23580 KiB
01-042.txt
AC
25 ms
19228 KiB
01-043.txt
AC
42 ms
23324 KiB
01-044.txt
AC
26 ms
17912 KiB
01-045.txt
AC
44 ms
23368 KiB
01-046.txt
AC
3 ms
5716 KiB
01-047.txt
AC
39 ms
23564 KiB
01-048.txt
AC
3 ms
6300 KiB
01-049.txt
AC
38 ms
23492 KiB
01-050.txt
AC
38 ms
23304 KiB
01-051.txt
AC
38 ms
23480 KiB
01-052.txt
AC
38 ms
23488 KiB
01-053.txt
AC
38 ms
23480 KiB
01-054.txt
AC
39 ms
23288 KiB
01-055.txt
AC
38 ms
23480 KiB
01-056.txt
AC
38 ms
23376 KiB
01-057.txt
AC
38 ms
23296 KiB
01-058.txt
AC
38 ms
23496 KiB
01-059.txt
AC
38 ms
23256 KiB