# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1016797 | 2024-07-08T12:30:15 Z | TAhmed33 | Žarulje (COI15_zarulje) | C++ | 13 ms | 9820 KB |
#include <bits/stdc++.h> using namespace std; const int MOD = 1e9 + 7; const int M = 1e6 + 25; int add (int a, int b) { a += b; if (a >= MOD) a -= MOD; return a; } int sub (int a, int b) { a -= b; if (a < 0) a += MOD; return a; } int mul (int a, int b) { return (a * 1ll * b) % MOD; } int power (int a, int b) { if (!b) return 1; int u = power(a, b >> 1); u = mul(u, u); if (b & 1) u = mul(u, a); return u; } int fact[M], inv[M]; int nCr (int a, int b) { if (a < b) return 0; return mul(fact[a], mul(inv[b], inv[a - b])); } void pre () { fact[0] = 1; for (int i = 1; i < M; i++) { fact[i] = mul(i, fact[i - 1]); } inv[M - 1] = power(fact[M - 1], MOD - 2); for (int i = M - 2; i >= 0; i--) { inv[i] = mul(i + 1, inv[i + 1]); } } int n, k, a[M]; void solve () { cin >> n >> k; for (int i = 1; i <= n; i++) { cin >> a[i]; } while (k--) { int x; cin >> x; map <int, int> f, g; int mn = 1e9; for (int i = x - 1; i >= 1; i--) { if (a[i] <= mn) { mn = a[i]; f[mn]++; } } mn = 1e9; for (int i = x + 1; i <= n; i++) { if (a[i] <= mn) { mn = a[i]; g[mn]++; } } int ans = 1; for (auto i : f) { ans = mul(ans, nCr(g[i.first] + i.second, i.second)); } cout << ans << '\n'; } } signed main () { #ifndef ONLINE_JUDGE freopen("input_file", "r", stdin); freopen("output_file", "w", stdout); #endif pre(); ios::sync_with_stdio(0); cin.tie(0); int tc = 1; //cin >> tc; while (tc--) solve(); }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 13 ms | 9820 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 12 ms | 9820 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 13 ms | 9820 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |