Submission #747611

#TimeUsernameProblemLanguageResultExecution timeMemory
747611Noctambulant캥거루 (CEOI16_kangaroo)C++14
0 / 100
2 ms340 KiB
// Author:Md. Liad Hossain
// KUET ECE 2K18

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp> // Common file
#include <ext/pb_ds/tree_policy.hpp>
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
using namespace std;
using namespace __gnu_pbds;
#define int long long int
#define nl '\n'
#define ff first
#define ss second
#define pf push_front
#define pb push_back
#define eb emplace_back
#define pof pop_front
#define pob pop_back
#define fbo find_by_order
#define ook order_of_key
#define FOR(i, n) for (int i = 0; i < (int)n; i++)
#define F0R(j, n) for (int j = 1; j <= (int)n; j++)
#define ROF(i, n) for (int i =(int) n - 1; i >= 0; i--)
#define R0F(i, n) for (int i = (int)n; i >= 1; i--)
#define all(v) v.begin(), v.end()
#define lb lower_bound
#define ub upper_bound
#define yes cout << "YES" << nl
#define no cout << "NO" << nl
#define mod 1000000007 //998244353 1000000007
#define setbit __builtin_popcount
#define elif else if
#define mem0(a) memset(a, 0, sizeof(a))
#define mem1(a) memset(a, -1, sizeof(a))
#define inf 9000000000000000000
#define eps 1e-9
// #define pi 2.0 * acos(0.0)
template <class T>
using oset = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;

// struct custom_hash {
//   static uint64_t splitmix64(uint64_t x) {
//     x += 0x9e3779b97f4a7c15;
//     x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9;
//     x = (x ^ (x >> 27)) * 0x94d049bb133111eb;
//     return x ^ (x >> 31);
//   }
//   size_t operator()(uint64_t x) const {
//     static const uint64_t FIXED_RANDOM = chrono::steady_clock::now().time_since_epoch().count();
//     return splitmix64(x + FIXED_RANDOM);
//   }
// };

// knight moves...
// int dx[]={-1,-2,-2,-1,1,2,2,1};
// int dy[]={-2,-1,1,2,2,1,-1,-2};

// grid moves without diagonal
// int dx[] = {0, -1, 0, 1};
// int dy[] = {-1, 0, 1, 0};

// only all diagonal moves
//  int dx[]={-1,-1,1,1};
//  int dy[]={-1,1,1,-1};

// grid moves with diagonal
// int dx[]={0,-1,-1,-1,0,1,1,1};
// int dy[]={-1,-1,0,1,1,1,0,-1};

//*************************Code Begins Here*************************//



void solve(){
    int n,a,b;
    cin>>n>>a>>b;
    int dp[n+1][n+1];
    mem0(dp);
    dp[1][1]=1;
    for(int i=2;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(i==a || i==b){
                dp[i][j]=(dp[i-1][j-1]+dp[i-1][j])%mod;
            }
            else{
                dp[i][j]=((dp[i-1][j-1]*(j-(i>a)-(i>b)))%mod+(dp[i-1][j+1]*j)%mod)%mod;
            }
        }
    }

    cout<<dp[n][1]<<nl;
}

signed main()
{
    //#ifndef ONLINE_JUDGE
        freopen("kangaroo.in", "r", stdin);
        freopen("kangaroo.out", "w", stdout);
    //#endif
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int t = 1;
    //cin >> t;
    while (t--)
    {
        solve();
    }
    return 0;
}

Compilation message (stderr)

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