Submission #49017025
Source Code Expand
// LUOGU_RID: 141880574
#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=3e3+7;
int n,m,S;
mint fac[N*N],ifac[N*N],f[N*N];
int sum[2][N<<1][N];
bool memed=0;
//=========================================================================================================
// Code here.
mint binom(int x,int y){return (x<0||y<0||x<y)?mint(0):fac[x]*ifac[y]*ifac[x-y];}
void solve(){
fac[0]=1;
for(int i=1;i<N*N;i++)fac[i]=fac[i-1]*i;
ifac[N*N-1]=1/fac[N*N-1];
for(int i=N*N-2;i>=0;i--)ifac[i]=ifac[i+1]*(i+1);
read(n,m,S);S=(S>>1)<<1;
for(int i=0;i<=n;i++)f[i*(m+1)]=(i&1?-1:1)*binom(n,i);
for(int i=2;i<=S;i++)f[i]+=f[i-2];
for(int i=0;i<=m;i++)
for(int j=0;j<=m;j++)
sum[(i+j)&1][i+j][abs(i-j)]++;
for(auto x:{0,1}){
for(int i=0;i<=2*m;i++)for(int j=1;j<=m;j++)sum[x][i][j]+=sum[x][i][j-1];
for(int j=0;j<=m;j++)for(int i=1;i<=2*m;i++)sum[x][i][j]+=sum[x][i-1][j];
}
mint ans[3]={0,0,0};
//---------------------------------------------------------------------------------------------------------
// calculate no condition
for(int i=0;i<=S;i++)ans[0]+=f[S-i]*binom(i+n-1,n-1);
//---------------------------------------------------------------------------------------------------------
// calculate one condition
for(int s=0;s<=2*m;s++){
mint coef=binom(s+n-3,n-3)-(n-2)*binom(s-m-1+n-3,n-3);
for(int i=s+2,l,r;i<=2*m&&s+i<=S;i+=2)l=max(0,i-m),r=min(m,i),ans[1]+=max(0,r-l+1)*coef;
}
//---------------------------------------------------------------------------------------------------------
// calculate two condition
for(int s=0;s<=m;s++){
mint coef=binom(s+n-4,n-4);
for(int i=s+1;i<=m&&s+i<=S;i++)
ans[2]+=coef*sum[(s+i)&1][min(m+m,S-s-i)][i-s-1];
}
// printf("%d %d %d\n",ans[0].val(),ans[1].val(),ans[2].val());
printf("%d\n",(ans[0]-n*ans[1]+n*ans[2]).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;
}
Submission Info
| Submission Time |
|
| Task |
E - Non-Adjacent Matching |
| User |
EXODUS |
| Language |
C++ 20 (gcc 12.2) |
| Score |
800 |
| Code Size |
3309 Byte |
| Status |
AC |
| Exec Time |
649 ms |
| Memory |
250820 KiB |
Compile Error
Main.cpp: In function ‘int main()’:
Main.cpp:20:28: warning: statement has no effect [-Wunused-value]
20 | #define Debug(...) 0
| ^
Main.cpp:95:9: note: in expansion of macro ‘Debug’
95 | Debug("%.3lfMB\n",fabs(&memed-&membg)/1024.0/1024.0);
| ^~~~~
Main.cpp:20:28: warning: statement has no effect [-Wunused-value]
20 | #define Debug(...) 0
| ^
Main.cpp:100:9: note: in expansion of macro ‘Debug’
100 | Debug("%.3lfs\n",1.0*(timed-timbg)/CLOCKS_PER_SEC);
| ^~~~~
Main.cpp:96:13: warning: unused variable ‘timbg’ [-Wunused-variable]
96 | int timbg=clock();
| ^~~~~
Main.cpp:99:13: warning: unused variable ‘timed’ [-Wunused-variable]
99 | int timed=clock();
| ^~~~~
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
800 / 800 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt |
| All |
00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 01_small_01.txt, 01_small_02.txt, 01_small_03.txt, 01_small_04.txt, 01_small_05.txt, 01_small_06.txt, 01_small_07.txt, 01_small_08.txt, 01_small_09.txt, 01_small_10.txt, 02_random_01.txt, 02_random_02.txt, 02_random_03.txt, 02_random_04.txt, 02_random_05.txt, 02_random_06.txt, 02_random_07.txt, 02_random_08.txt, 02_random_09.txt, 02_random_10.txt, 03_large_01.txt, 03_large_02.txt, 03_large_03.txt, 03_large_04.txt, 03_large_05.txt, 03_large_06.txt, 03_large_07.txt, 03_large_08.txt, 03_large_09.txt, 03_large_10.txt, 03_large_11.txt, 03_large_12.txt, 03_large_13.txt, 03_large_14.txt, 03_large_15.txt, 03_large_16.txt, 03_large_17.txt, 03_large_18.txt, 03_large_19.txt, 03_large_20.txt, 03_large_21.txt, 03_large_22.txt, 03_large_23.txt, 04_handmade_01.txt, 04_handmade_02.txt, 04_handmade_03.txt, 04_handmade_04.txt |
| Case Name |
Status |
Exec Time |
Memory |
| 00_sample_01.txt |
AC |
108 ms |
109768 KiB |
| 00_sample_02.txt |
AC |
108 ms |
109828 KiB |
| 00_sample_03.txt |
AC |
110 ms |
112540 KiB |
| 01_small_01.txt |
AC |
109 ms |
110608 KiB |
| 01_small_02.txt |
AC |
109 ms |
110648 KiB |
| 01_small_03.txt |
AC |
108 ms |
109876 KiB |
| 01_small_04.txt |
AC |
109 ms |
110576 KiB |
| 01_small_05.txt |
AC |
108 ms |
111200 KiB |
| 01_small_06.txt |
AC |
108 ms |
110028 KiB |
| 01_small_07.txt |
AC |
108 ms |
109836 KiB |
| 01_small_08.txt |
AC |
109 ms |
111472 KiB |
| 01_small_09.txt |
AC |
110 ms |
110224 KiB |
| 01_small_10.txt |
AC |
109 ms |
111564 KiB |
| 02_random_01.txt |
AC |
356 ms |
208132 KiB |
| 02_random_02.txt |
AC |
400 ms |
216620 KiB |
| 02_random_03.txt |
AC |
518 ms |
242000 KiB |
| 02_random_04.txt |
AC |
337 ms |
205772 KiB |
| 02_random_05.txt |
AC |
263 ms |
180680 KiB |
| 02_random_06.txt |
AC |
114 ms |
116984 KiB |
| 02_random_07.txt |
AC |
348 ms |
207764 KiB |
| 02_random_08.txt |
AC |
127 ms |
125804 KiB |
| 02_random_09.txt |
AC |
583 ms |
247088 KiB |
| 02_random_10.txt |
AC |
298 ms |
187836 KiB |
| 03_large_01.txt |
AC |
649 ms |
250576 KiB |
| 03_large_02.txt |
AC |
595 ms |
250624 KiB |
| 03_large_03.txt |
AC |
637 ms |
250792 KiB |
| 03_large_04.txt |
AC |
649 ms |
250672 KiB |
| 03_large_05.txt |
AC |
400 ms |
217296 KiB |
| 03_large_06.txt |
AC |
481 ms |
229752 KiB |
| 03_large_07.txt |
AC |
494 ms |
239744 KiB |
| 03_large_08.txt |
AC |
364 ms |
209224 KiB |
| 03_large_09.txt |
AC |
456 ms |
228508 KiB |
| 03_large_10.txt |
AC |
431 ms |
222348 KiB |
| 03_large_11.txt |
AC |
569 ms |
243104 KiB |
| 03_large_12.txt |
AC |
457 ms |
227816 KiB |
| 03_large_13.txt |
AC |
395 ms |
216208 KiB |
| 03_large_14.txt |
AC |
360 ms |
205780 KiB |
| 03_large_15.txt |
AC |
479 ms |
228012 KiB |
| 03_large_16.txt |
AC |
576 ms |
242612 KiB |
| 03_large_17.txt |
AC |
456 ms |
221488 KiB |
| 03_large_18.txt |
AC |
585 ms |
243332 KiB |
| 03_large_19.txt |
AC |
476 ms |
226576 KiB |
| 03_large_20.txt |
AC |
436 ms |
219744 KiB |
| 03_large_21.txt |
AC |
521 ms |
233004 KiB |
| 03_large_22.txt |
AC |
478 ms |
225028 KiB |
| 03_large_23.txt |
AC |
378 ms |
209020 KiB |
| 04_handmade_01.txt |
AC |
552 ms |
250820 KiB |
| 04_handmade_02.txt |
AC |
108 ms |
109592 KiB |
| 04_handmade_03.txt |
AC |
594 ms |
250732 KiB |
| 04_handmade_04.txt |
AC |
550 ms |
250668 KiB |