Submission #1294095

#TimeUsernameProblemLanguageResultExecution timeMemory
1294095dragonrobotKangaroo (CEOI16_kangaroo)C++17
0 / 100
1 ms568 KiB
#include<iostream>
#include<vector>
#define ll long long
using namespace std;
const ll MOD=1000000007;
ll power(ll k, ll x)
{   ll res=1;
    k%=MOD;
    while(x>0)
    {
        if(x%2==1)
            res=(res*k)%MOD;
        k=(k*k)%MOD;
        x/=2;
    }
    return res;
}
ll modi(ll n){
    return power(n,MOD-2);
}
ll stol(ll n,ll r,const vector<ll>&y,const vector<ll>&z)
{
    if(r<0 || r>n)
        return 0;
    return(((y[n]*z[r])%MOD)*z[n-r])%MOD;
}
int main()
{   int n,s,f;
    cin>>n>>s>>f;
    vector<ll>v(n+1);
    vector<ll>v2(n+1);
    v[0]=1;
    v2[0]=1;
    for(int i=1; i<=n; i++)
    {
        v[i]=(v[i-1]*i)%MOD;
        v2[i]=modi(v[i]);
    }
    ll ans=0;
    if(f<s)
        ans=stol(n-2,s-2,v,v2);
    else
        ans=stol(n-2,n-s-1,v,v2);
    cout<<ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...