(UPD: 2024-12-04 14:48 UTC) Judge is not working due to Cloudflare incident. (URL) We can do nothing about it, sorry. After the incident is resolved, we will grade all submissions.

Submission #362297

#TimeUsernameProblemLanguageResultExecution timeMemory
362297Sho10Kangaroo (CEOI16_kangaroo)C++17
100 / 100
39 ms23020 KiB
#include <bits/stdc++.h> //Andrei Alexandru a.k.a Sho10 #define ll long long #define double long double #pragma GCC optimize("O3") #pragma GCC optimize("Ofast") #define aint(a) (a).begin(), (a).end() #define f first #define s second #define pb push_back #define mp make_pair #define pi pair #define rc(s) return cout<<s,0 #define endl '\n' #define mod 1000000007 #define PI 3.14159265359 #define INF 1000000005 #define LINF 1000000000000000005ll #define CODE_START ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); using namespace std; ll n,s1,s2,dp[2005][2005]; void sum(ll &a, ll b){ a+=b; if(a>=mod)a-=mod; } int32_t main(){ CODE_START; cin>>n>>s1>>s2; if(s1>s2){ swap(s1,s2); } dp[1][0]=1; for(ll i=1;i<=n;i++) { for(ll j=0;j<=i;j++) { if(i!=s1&&i!=s2){ if(i<n&&j){ sum(dp[i+1][j-1],1ll*dp[i][j]*j*(j-1)%mod); } if(i<n&&j<n){ sum(dp[i+1][j+1],dp[i][j]); } if(i>s1&&i<n&&j){ sum(dp[i+1][j-1],1ll*dp[i][j]*j%mod); } if(i>s2&&i<n&&j){ sum(dp[i+1][j-1],1ll*dp[i][j]*j%mod); } }else { sum(dp[i+1][j],dp[i][j]); if(j){ sum(dp[i+1][j-1],1ll*dp[i][j]*j%mod); } } } } cout<<dp[n][0]<<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...