제출 #1156642

#제출 시각아이디문제언어결과실행 시간메모리
1156642keremMagneti (COCI21_magneti)C++20
0 / 110
1 ms580 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define fr first #define sc second #define pb push_back #define endl "\n" #define all(x) x.begin(),x.end() #define sp << " " << #define inf 1e18+1 #define N 20000 #define fast ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);cout<<fixed<<setprecision(0) mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); typedef tuple<int,int,int> tiii; typedef pair<int,int> pii; const int mod=1000000007; int fac[N+5]; int fp(int x,int y){ int ans=1; while(y){ if(y&1) ans=ans*x%mod; x=x*x%mod; y>>=1; } return ans; } void solve(){ fac[0]=1; for(int i=1;i<N+5;i++) fac[i]=fac[i-1]*i%mod; int n,l; cin >> n >> l; int a[n],sum=0; for(int i=0;i<n;i++){ cin >> a[i]; sum+=2*a[i]-1; } int ans=0; for(int i=0;i<n;i++){ for(int j=i+1;j<n;j++){ int t=sum-2*(a[i]+a[j])+2; for(int k=a[i]+a[j];k<=2*(a[i]+a[j])-2;k++){ if(k>l-t) break; ans=(ans + fac[n-2+l-t-k]*fp(fac[l-t-k],mod-2)%mod*(min(2*a[i]-1,k-a[j])-max(a[i],k-2*a[j]+1)+1)*2)%mod; } } } if(n==1) ans=l; cout << ans << endl; } int32_t main(){ fast; int test=1; //~ cin >> test; while(test--) solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...