Submission #465518

#TimeUsernameProblemLanguageResultExecution timeMemory
465518BT21tata캥거루 (CEOI16_kangaroo)C++17
0 / 100
1 ms332 KiB
#include<bits/stdc++.h> // #pragma GCC target ("avx,avx2,fma") // #pragma GCC optimize("Ofast") // #pragma GCC optimize("unroll-loops") typedef long long ll; typedef long double ld; #define SPEED ios_base::sync_with_stdio(false); cin.tie(0), cout.tie(0) #define rall(v) (v).rbegin(),(v).rend() #define all(v) (v).begin(),(v).end() #define OK cerr<<"OK"<<endl<<flush #define pii pair<int, int> #define pll pair<ll, ll> #define pb push_back #define F first #define S second #define y0 jahdakdh #define y1 jahsadakdakdh #define endl '\n' const ll MOD=1e9+7; using namespace std; //mt19937 rng(std::chrono::system_clock::now().time_since_epoch().count()); int n, st, fin; ll num[2005][2005][2]; bool used[2005], cal[2005][2005][2]; void f(int cur, int pr, int cnt) { if(cal[cur][cnt][((cur<pr)?0:1)]) return; cal[cur][cnt][((cur<pr)?0:1)]=1; //cout<<pr<<' '<<cur<<' '<<cnt<<' '<<num[cur][cnt][((cur<pr)?0:1)]<<endl; if(cur==fin and cnt==n) num[cur][cnt][((cur<pr)?0:1)]++; used[cur]=1; for(int nxt=1; nxt<=n; nxt++) if(!used[nxt]) { if(pr==-1) { f(nxt, cur, cnt+1); num[cur][cnt][1]+=num[nxt][cnt+1][((cur<nxt)?1:0)]; num[cur][cnt][0]+=num[nxt][cnt+1][((cur<nxt)?1:0)]; } else if(pr<cur and nxt<cur) { f(nxt, cur, cnt+1); num[cur][cnt][1]+=num[nxt][cnt+1][0]; } else if(cur<pr and cur<nxt) { f(nxt, cur, cnt+1); num[cur][cnt][0]+=num[nxt][cnt+1][1]; } } used[cur]=0; } // num[cur][cnt][0] --> cur<pr // num[cur][cnt][1] --> pr<cur int main() { SPEED; cin>>n>>st>>fin; f(st, -1, 1); cout<<num[st][1][0]+num[st][1][1]; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...