제출 #1030859

#제출 시각아이디문제언어결과실행 시간메모리
1030859MarwenElarbiKangaroo (CEOI16_kangaroo)C++17
0 / 100
13 ms31836 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> using namespace std; using namespace __gnu_pbds; #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #define fi first #define se second #define ll long long #define pb push_back #define ii pair<int,int> template <class T> using Tree = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; const int nax=2e3+5; const int MOD=1e9+7; #define optimise ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); long long dp[nax][nax]; int main() { optimise; int n,s,t; cin>>n>>s>>t; s--;t--; if(s>t) swap(s,t); memset(dp,0,sizeof dp); dp[0][1]=1; for (int i = 1; i < n; ++i) { for (int j = 0; j < n; ++j) { if(i<s){ dp[i][j]+= 1ll * dp[i-1][j+1] * (j+1) * (j); dp[i][j]+= dp[i-1][j-1]; }else if(i==s){ dp[i][j]+= 1ll * dp[i-1][j+1] * (j+1); }else if(i<t){ dp[i][j]+= 1ll * dp[i-1][j+1] * j * j; }else if(i==t){ dp[i][j]+= 1ll* dp[i-1][j+1] * j+1; }else { dp[i][j]+= 1ll * dp[i-1][j+1] * (j+1) * (j); } dp[i][j]%=MOD; } } cout <<dp[n-1][1]<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...