(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 #442185

#TimeUsernameProblemLanguageResultExecution timeMemory
442185kasparovianKangaroo (CEOI16_kangaroo)C++14
100 / 100
37 ms22348 KiB
// '-.-' // () __.'.__ // .-:--:-. |_______| // () \____/ \=====/ // /\ {====} )___( // (\=, //\\ )__( /_____\ // __ |'-'-'| // .\ ( ) /____\ | | // / \ |_____| (( \_ \ )__( | | | | // \__/ |===| )) `\_) /____\ | | | | // /____\ | | (/ \ | | | | | | // | | | | | _.-'| | | | | | | // |__| )___( )___( /____\ /____\ /_____\ // (====) (=====) (=====) (======) (======) (=======) // }===={ }====={ }====={ }======{ }======{ }======={ // (______)(_______)(_______)(________)(________)(_________) // // Credits :- Joan G. Stark //|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| //| AUTHOR - KASPAROVIAN | //|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| #include<bits/stdc++.h> #define rep(i,a,b) for(int i=(a);i<=(b);i++) #define per(i,a,b) for(int i=(a);i>=(b);i--) #define frr(i,n) for(int i=0;i<(n);i++) #define pb push_back #define eb emplace_back #define all(v) (v).begin(),(v).end() #define fr first #define sc second #define mk make_pair #define endl '\n' #define MOD 1000000007 #define in insert #define sz(x) (ll)(x).size() #define mem(a,b) memset(a,b,sizeof(a)) #define int long long #define runtime() ((double)clock() / CLOCKS_PER_SEC) #define fast ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0) using namespace std; #define TRACE #ifdef TRACE #define trace(...) __f(#__VA_ARGS__, __VA_ARGS__) template <typename Arg1> void __f(const char* name, Arg1&& arg1){ cerr << name << " : " << arg1 << endl; } template <typename Arg1, typename... Args> void __f(const char* names, Arg1&& arg1, Args&&... args){ const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...); } #else #define trace(...) #endif typedef long long ll; typedef vector<int> vi; typedef vector<ll> vl; typedef long double ld; typedef pair<ll,ll> pl; typedef pair<int,int> pi; typedef pair<int,pi> ppi; typedef vector<vi> graph; template<class T> void mxi(T & a, const T & b) { a = max(a, b); } template<class T> void mni(T & a, const T & b) { a = min(a, b); } ld EPS=1e-9; mt19937 RNG(chrono::steady_clock::now().time_since_epoch().count()); #define SHUF(v) shuffle(all(v), RNG); // Use mt19937_64 for 64 bit random numbers. // https://oj.uz/problem/view/CEOI16_kangaroo int dp[1<<11][1<<11],s,e,n; void solve() { cin>>n>>s>>e; dp[1][1]=1; for(int i=1;i<n;i++){ for(int j=1;j<=i;j++){ if(i+1==s||i+1==e){ dp[i+1][j+1]=(dp[i+1][j+1]+dp[i][j])%MOD; dp[i+1][j]=(dp[i+1][j]+dp[i][j])%MOD; continue; } int spac = j-1; if(i<s)spac++; if(i<e)spac++; dp[i+1][j-1]=(dp[i+1][j-1]+dp[i][j]*(j-1)%MOD)%MOD; dp[i+1][j+1]=(dp[i+1][j+1]+dp[i][j]*spac%MOD)%MOD; } } cout<<dp[n][1]<<endl; } signed main() { fast; int t,tab; t=1; tab=t; while(t--) { //cout<<"Case #"<<(tab-t)<<": "; solve(); } cerr<<runtime(); } //APPROACHING A QUESTION //+ Think of binary search (max of min etc also if n<=2*10^5) //+ Think of common dp states (Even if it appears as maths but constraints are small) //+ Check constraints //+ Keep calm and enjoy the question //+ Be sure to remove MOD from binpow (if needed) //+ Try bidirectional analysis for constructive questions //+ If given some sequence try thinking of prefix sums //+ If constraints are too large maybe its simple maths //+ In questions with binary operations think of bits independently and also the change pattern //+ If two or more binary operations are given mostly there is a relation between them and an arithmatic operator

Compilation message (stderr)

kangaroo.cpp:7:4: warning: multi-line comment [-Wcomment]
    7 |    //                    (\=,      //\\      )__(     /_____\
      |    ^
kangaroo.cpp:13:4: warning: multi-line comment [-Wcomment]
   13 |    //   |__|    )___(    )___(    /____\    /____\    /_____\
      |    ^
kangaroo.cpp: In function 'int main()':
kangaroo.cpp:96:9: warning: variable 'tab' set but not used [-Wunused-but-set-variable]
   96 |   int t,tab;
      |         ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...