样例3RE了是什么鬼
  • 板块P1866 编号
  • 楼主Jonas666
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/8/16 20:36
  • 上次更新2023/11/3 03:17:20
查看原帖
样例3RE了是什么鬼
806846
Jonas666楼主2023/8/16 20:36
/*
* By:Jonas666
* AC is my honor
* Please dont be WA
*/
#include<bits/stdc++.h>
#include<unordered_map>
using namespace std;
#define fast ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
typedef long long ll;
typedef pair<int, int> PII;
const int N = 3010, INF = 0x3f3f3f3f;
const double euler = 0.5772156649015328606065120;
const int mod = 1e9 + 7;

ll c[N][N], a[N];

void init() {
    for (int i = 0; i < N; i++)
        for (int j = 0; j <= i; j++)
            if (!j) c[i][j] = 1;
            else c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % mod;
}

void solve() {
    ll n, ans = 1;
    cin >> n;
    map<int, int> mp;
    vector<int> v;
    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        mp[a[i]]++;
    }
    for (auto i : mp) {
        if (i.second > n) {
            cout << 0 << '\n';
            return;
        }
    }
    sort(a + 1, a + 1 + n);
    for (int i = 1; i <= n; i++) {
        ans = (ans * c[a[i] - i + 1][1]) % mod;
    }
    ans = (ans % mod + mod) % mod;
    cout << ans << '\n';
}

int main()
{
    fast;
    init();
    int t = 1;
    //cin >> t;
    while (t--) {
        solve();
    }
    return 0;
}
2023/8/16 20:36
加载中...