제출 #783129

#제출 시각아이디문제언어결과실행 시간메모리
783129kebineThe Xana coup (BOI21_xanadu)C++17
0 / 100
1 ms596 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,m;
ll a[2005],b[2005];
ll pref[2005],suff[2005];
ll mod=1e9+7;
ll jawab;
vector <ll> ans;
ll fact (ll nn){
    if (nn==0) return 1;
    return nn%mod*fact(nn-1)%mod;
}
ll kali (ll x, ll y){
    return (x*y)%mod;
}
ll simpan=1;
void fexpo(ll x, ll y){
     if(y == 0) return;
    if (y==1) {
        simpan=kali(simpan,x);
        return;
    }
    if (y%2==0){
        fexpo(kali(x,x),y/2);
    }
    else{
        simpan=kali(simpan,x);
        fexpo(kali(x,x),(y-1)/2);
    }
}
int main(){
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    //fexpo(fact(1950), mod - 2);
        //fexpo(fact(2000), mod - 2);

    cin>>n>>m;
    for (int i=1;i<=n;i++){
        cin>>a[i];
        pref[i]=max(pref[i-1],a[i]);
        // cout<<pref[i]<<endl;
    }
    for (int i=1;i<=n;i++){
        suff[i]=max(suff[i-1],a[n-i+1]);
    }
    // for (int i=1;i<=n;i++) cout<<pref[i]<<" "<<suff[i]<<":::"<<i<<endl;
    for (int i=1;i<=m;i++){
        cin>>b[i];
    }
    if (n<m) {
        cout<<0;
        return 0;
    }
    ll tes=1;
    ll u=m-1;
     fexpo(fact(u)%mod,mod-2);
         tes*=simpan%mod;
         simpan=1;
         fexpo(fact(n-m)%mod,mod-2);
         tes*=simpan%mod*fact(n-1)%mod;
         tes%=mod;
         cout<<tes;
}
#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...