답안 #1016797

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1016797 2024-07-08T12:30:15 Z TAhmed33 Žarulje (COI15_zarulje) C++
0 / 100
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

zarulje.cpp: In function 'int main()':
zarulje.cpp:70:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   70 |         freopen("input_file", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
zarulje.cpp:71:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   71 |         freopen("output_file", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 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 -