Submission #1227854

#TimeUsernameProblemLanguageResultExecution timeMemory
1227854_rain_Tents (JOI18_tents)C++20
100 / 100
86 ms35652 KiB
#include<bits/stdc++.h> using namespace std; typedef long long LL; const int MOD=(int)1e9+7; int add(int a,int b){ return a+b>=MOD?a+b-MOD:a+b; } int sub(int a,int b){ return a-b<0?a-b+MOD:a-b; } int mul(int a,int b){ return (LL)a*b%MOD; } int power(int a,int b){ int res=1; for(;b;b>>=1,a=mul(a,a)){ if (b&1) res=mul(res,a); } return res; } const int N=(int)3000; int fac[N+2] , inv[N+2]; void build(){ fac[0]=1; for(int i=1;i<=N;++i) fac[i]=mul(fac[i-1],i); inv[N]=power(fac[N],MOD-2); for(int i=N;i>=1;--i) inv[i-1]=mul(inv[i],i); return; } int C(int x,int y){ if (x>y) return 0; return (LL)fac[y]*inv[y-x]%MOD*inv[x]%MOD; } int numrow,numcol; int f[N+2][N+2]; int main(){ ios::sync_with_stdio(false); cin.tie(0) ; cout.tie(0); #define task "main" if (fopen(task".inp","r")){ freopen(task".inp","r",stdin); freopen(task".out","w",stdout); } cin>>numrow>>numcol; build(); for(int i=0;i<=max(numrow,numcol);++i) f[i][0]=f[0][i]=1; for(int i=1;i<=numrow;++i){ for(int j=1;j<=numcol;++j){ f[i][j]=mul(f[i-1][j-1],mul(4,i)); f[i][j]=add(f[i][j],f[i][j-1]); if (i>=2){ f[i][j]=add(f[i][j],mul(C(2,i),f[i-2][j-1])); } if (j>=2){ f[i][j]=add(f[i][j],mul(mul(i,j-1),f[i-1][j-2])); } } } cout<<sub(f[numrow][numcol],1); return 0; }

Compilation message (stderr)

tents.cpp: In function 'int main()':
tents.cpp:47:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   47 |                 freopen(task".inp","r",stdin);
      |                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
tents.cpp:48:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   48 |                 freopen(task".out","w",stdout);
      |                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...