• Source
    1. #include<bits/stdc++.h>
    2. //#pragma GCC optimize("O2")
    3. //#pragma GCC optimize("Ofast")
    4. //#pragma GCC target("avx,avx2,fma")
    5. #define el '\n'
    6. #define base 31
    7. typedef long long ll;
    8. #define N 1000005
    9. #define M 100005
    10. #define mod 1000000007
    11. #define TIME (1.0*clock()/CLOCKS_PER_SEC)
    12. #define fi first
    13. #define se second
    14. #define name "SON.inp"
    15. using namespace std;
    16. ////////////////////////////////////////////////
    17. int n,k,i,j,h,ma,dp[40000];
    18. int main()
    19. {
    20. ios_base::sync_with_stdio(0);
    21. cin.tie(0);cout.tie(0);
    22. if(fopen(name,"r"))
    23. {
    24. freopen(name,"r",stdin);
    25. //freopen("SON.out","w",stdout);
    26. }
    27. cin>>n>>k;
    28. ma=0;
    29. for(i = 0 ; i < n ; i ++ )
    30. {
    31. ma+=(1<<i);
    32. dp[1<<i]=1;
    33. }
    34. // bit 1 dung de danh dau so do da duoc chon chua
    35. for(i = 1 ; i < ma ; i ++ )
    36. for(j = 0 ; j < n ; j ++ ) if( (i >> j) & 1 )
    37. {
    38. for(h=j-1 ; (h>=0) && j-h<=k ; h -- ) if(((i >> h) ^ 1) & 1) dp[i|(1<<h)]+=dp[i];
    39. for(h=j+1 ; (h<n) && h-j<= k ; h ++ ) if(((i >> h) ^ 1) & 1) dp[i|(1<<h)]+=dp[i];
    40. }
    41. cout<<dp[ma];
    42. cerr<<"\n--------------Verdict----------------\n";
    43. cerr<<"Time elapse : "<<TIME<<"s\n";
    44. return 0;
    45. }
    46.