Submission #421369

#TimeUsernameProblemLanguageResultExecution timeMemory
421369juggernautTents (JOI18_tents)C++17
100 / 100
463 ms70760 KiB
#include<bits/stdc++.h> #define fr first #define sc second using namespace std; void usaco(string s){freopen((s+".in").c_str(),"r",stdin);freopen((s+".out").c_str(),"w",stdout);} typedef long long ll; #define USING_ORDERED_SET 0 #if USING_ORDERED_SET #include<bits/extc++.h> using namespace __gnu_pbds; template<class T>using ordered_set=tree<T,null_type,less<T>,rb_tree_tag,tree_order_statistics_node_update>; #endif template<class T>void umax(T &a,T b){if(a<b)a=b;} template<class T>void umin(T &a,T b){if(b<a)a=b;} #ifdef IOI2021SG #define printl(args...)printf(args) #else #define printl(args...)((void)0) #endif ll dp[3005][3005]; ll mod=1e9+7; inline ll add(ll a,ll b){ return (a+b)%mod; } inline ll mult(ll a,ll b){ return (a*b)%mod; } int main(){ int n,m; scanf("%d%d",&n,&m); if(n>m)swap(n,m); for(int i=0;i<=n;i++)dp[i][0]=1; for(int i=0;i<=m;i++)dp[0][i]=1; for(int i=1;i<=n;i++)dp[i][1]=4*i+i*(i-1)/2+1; for(int i=1;i<=m;i++)dp[1][i]=4*i+i*(i-1)/2+1; for(int i=2;i<=n;i++) for(int j=2;j<=m;j++){ dp[i][j]=add(dp[i][j],dp[i-1][j]); dp[i][j]=add(dp[i][j],mult(4*j,dp[i-1][j-1])); dp[i][j]=add(dp[i][j],mult(dp[i-1][j-2],j*(j-1)/2)); dp[i][j]=add(dp[i][j],mult(dp[i-2][j-1],j*(i-1))); } ll ans=dp[n][m]; if(ans==0)ans=mod-1; else ans--; printf("%lld",ans); }

Compilation message (stderr)

tents.cpp: In function 'void usaco(std::string)':
tents.cpp:5:29: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    5 | void usaco(string s){freopen((s+".in").c_str(),"r",stdin);freopen((s+".out").c_str(),"w",stdout);}
      |                      ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tents.cpp:5:66: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    5 | void usaco(string s){freopen((s+".in").c_str(),"r",stdin);freopen((s+".out").c_str(),"w",stdout);}
      |                                                           ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tents.cpp: In function 'int main()':
tents.cpp:30:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   30 |     scanf("%d%d",&n,&m);
      |     ~~~~~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...