Submission #1300350

#TimeUsernameProblemLanguageResultExecution timeMemory
1300350tte0Magneti (COCI21_magneti)C++20
0 / 110
2 ms572 KiB
// Author: Teoman Ata Korkmaz #pragma GCC optimize("O3,unroll-loops,inline") #include <bits/stdc++.h> #pragma GCC target("avx,avx2,bmi,bmi2,popcnt") #define int int_fast64_t using namespace std; constexpr int N=1e4+4; constexpr int MOD=1e9+7; /////////////////////////////////////////////////////////// int n,l,fact[N],inv_fact[N]; //int32_t dp[N][N];//partition K (i) into N (j) vector<int> v; inline int fp(int b,int p){ int ans=1; while(p){ if(p&1)ans=(ans*b)%MOD; p>>=1; b=(b*b)%MOD; } return ans; } inline int nCr(int n,int r){ return (((fact[n]*inv_fact[r])%MOD)*inv_fact[n-r])%MOD; } signed main(void){ fact[0]=1;for(int i=1;i<N;i++)fact[i]=(fact[i-1]*i)%MOD; for(int i=0;i<N;i++)inv_fact[i]=fp(fact[i],MOD-2); //cerr<<"inv_Fact: ";for(int i=0;i<5;i++)cerr<<inv_fact[i]<<" ";cerr<<endl; /*for(int n=0;n<5;n++){ for(int r=0;r<n;r++){ cerr<<"nCr("<<n<<","<<r<<")="<<nCr(n,r)<<endl; } }*/ /*for(size_t k=0;k<5;k++){ cerr<<"dp: "; for(size_t n=0;n<5;n++){ cerr<<dp[k][n]<<" "; } cerr<<endl; }cerr<<endl;*/ cin>>n>>l; if(n==1){ cout<<l<<endl; exit(0); } v.resize(n); for(auto& i:v){cin>>i;i--;} int range_size=0; for(int i=0;i<n;i++)range_size+=v[i]+1; /*for(int n=0;n<5;n++){ for(int r=0;r<n;r++){ cerr<<"nCr("<<n<<","<<r<<")="<<nCr(n,r)<<endl; } }*/ int ans=0; for(int start=0;start<n;start++){ for(int stop=0;stop<n;stop++){ if(start==stop)continue; int step=l-(range_size-v[start]-v[stop]); if(step<0)continue; //cerr<<"yippe"<<endl; //cerr<<"fact: ";for(int i=0;i<5;i++)cerr<<fact[i]<<" ";cerr<<endl; //cerr<<"nCr("<<n<<","<<step<<")="<<nCr(n,step)<<endl; ans+=nCr(l,step); //cerr<<"start stop step: "<<start<<" "<<stop<<" "<<step<<endl; //cerr<<"ans: "<<ans<<endl; ans%=MOD; } } ans%=MOD; ans*=fact[n-2]; ans%=MOD; cout<<ans<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...