Submission #605447

#TimeUsernameProblemLanguageResultExecution timeMemory
605447MadokaMagicaFanKangaroo (CEOI16_kangaroo)C++14
100 / 100
25 ms31688 KiB
#include "bits/stdc++.h"

using namespace std;

using ll = long long;
const ll inf = 1e9;
const int md1 = 1e9+7;
const int md2 = 998244353;

#define sz(v)                       ((int)v.size())
#define pb                          push_back

#define pry                         cout << "YES\n"
#define prn                         cout << "NO\n"
#define endl                        '\n'

#define fst                         first
#define scn                         second
#define ONPC

const int N = 2000;
ll dp[N+1][N+5]; 


#ifdef ONPC
void
solve()
{
    int n, s, t;
    cin >> n >> s >> t;

    if (s > t) swap(s,t);

    s -= 2;
    t -= 2;
    dp[0][1] = 1;
    for (int i = 0; i < n-2; ++i) {
        for (ll j = 1; j < n+1; ++j) {
                if (i < s) dp[i+1][j] = (dp[i][j-1] + (j+1)*j*dp[i][j+1]) % md1;
                else if (i == s) dp[i+1][j] = (dp[i][j-1] + j*dp[i][j]) % md1;
                else if (i <  t) dp[i+1][j] = (dp[i][j-1] + j*j*dp[i][j+1]) % md1;
                else if (i == t) dp[i+1][j] = (dp[i][j] + j*dp[i][j+1]) % md1;
                else dp[i+1][j] = (dp[i][j-1] + (j+1)*j*dp[i][j+1]) % md1;

                /* if (i > t) cout << j << ' ' << dp[i][j] << ' ' <<  dp[i][j+1] << endl; */
        }
    }

    /* for (int i = 0; i < n; ++i) { */
    /*     for (int j = 0; j < n; ++j) { */
    /*         cout << dp[j][i] << ' '; */
    /*     } */
    /*  */
    /*     cout << endl; */
    /* } */

    cout << dp[n-2][1] << endl;
}

int32_t
main(int argc, char **argv)
{
    if (argc >= 2) {
        freopen(argv[1], "r", stdin);
    } else
        ios_base::sync_with_stdio(0);cin.tie(0);
    int t = 1;
    /* cin >> t; */
    while(t--)
        solve();
}
#endif

Compilation message (stderr)

kangaroo.cpp: In function 'int32_t main(int, char**)':
kangaroo.cpp:65:7: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
   65 |     } else
      |       ^~~~
kangaroo.cpp:66:38: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else'
   66 |         ios_base::sync_with_stdio(0);cin.tie(0);
      |                                      ^~~
kangaroo.cpp:64:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   64 |         freopen(argv[1], "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...