提交时间:2026-01-17 13:54:49
运行 ID: 39619
#include<bits/stdc++.h> #define int long long using namespace std; const int N=27; int n,m,k,a[N]; int Ans; map<int,int> mp[N]; inline void DFS1(int S,int x,int i){ // cout<<S<<" "<<x<<" "<<i<<endl; if(x>m||S>k)return; if(i==n/2+1){ mp[x][S]++; return; } DFS1(S,x,i+1); DFS1(S+a[i],x,i+1); DFS1(S+a[i]*a[i]+1,x+1,i+1); } inline void DFS2(int S,int x,int i){ if(x>m||S>k)return; if(i==n+1){ for(int j=0;j<=m-x;j++)Ans+=mp[j][k-S]; return; } DFS2(S,x,i+1); DFS2(S+a[i],x,i+1); DFS2(S+a[i]*a[i]+1,x+1,i+1); } signed main(){ #ifndef ONLINE_JUDGE freopen("magic.in","r",stdin); freopen("magic.out","w",stdout); #endif cin>>n>>m>>k; m/=20; // cout<<n<<" "<<m<<" "<<k<<endl; for(int i=1;i<=n;i++)cin>>a[i]; DFS1(0,0,1);DFS2(0,0,n/2+1); cout<<Ans<<endl; return 0; }