Submission #1225647

#TimeUsernameProblemLanguageResultExecution timeMemory
1225647ashraful_alamBinaria (CCO23_day1problem1)C++20
25 / 25
106 ms15944 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; const ll M = 1e6 + 3; ll binpow(ll a, ll b) { if (b == 0) return 1; ll x = binpow(a, b/2); x = (x * x) % M; if (b & 1) x = (x * a) % M; return x; } ll nCr(ll n, ll r) { if (r > n || n < 0 || r < 0) return 0; ll ans = 1; for (int i = r + 1; i <= n; i++) ans = ans * i % M; for (int i = 1; i <= n - r; i++) ans = ans * binpow(i, M - 2) % M; return ans; } void solve() { //write your code here... ll n, k; cin >> n >> k; vector<ll> a(n - k + 2), x(n + 1, -1); for (int i = 1; i <= n - k + 1; i++) cin >> a[i]; for (int i = 2; i <= n - k + 1; i++) { if (abs(a[i] - a[i - 1]) > 1) { cout << "0\n"; return; } } for (int i = 2; i <= n - k + 1; i++) { if (a[i] - a[i - 1] == 1) x[i - 1 + k] = 1, x[i - 1] = 0; else if (a[i] - a[i - 1] == -1) x[i - 1 + k] = 0, x[i - 1] = 1; else x[i - 1 + k] = x[i - 1]; } for (int i = n - k; i >= 1; i--) { if (a[i] == a[i + 1]) x[i] = x[i + k]; } int free = 0; for (int i = 1; i <= k; i++) { free += (x[i] == -1); a[1] -= (x[i] == 1); } cout << nCr(free, a[1]) << '\n'; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); ll T = 1; //cin >> T; while (T--) { solve (); } 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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...