Pagini recente » Cod sursa (job #140370) | Cod sursa (job #2972486) | Cod sursa (job #1308732) | Cod sursa (job #1324573) | Cod sursa (job #2338820)
#include <bits/stdc++.h>
#define Int long long
using namespace std;
ifstream f("cowfood.in");
ofstream g("cowfood.out");
const Int mod=3210121;
int k,s,n,i,j,ans,a[25][35],C[10040][35];
int main()
{
f>>k>>s>>n;
for(i=0;i<=s+k;i++)
{
C[i][0]=1;
for(j=1;j<=i;j++)
C[i][j]=(C[i-1][j]+C[i-1][j-1]>=mod)?C[i-1][j]+C[i-1][j-1]-mod:C[i-1][j]+C[i-1][j-1];
}
for(i=1;i<=n;i++)
for(j=1;j<=k;j++)
f>>a[i][j];
for(int mask=1;mask<(1<<n);mask++)
{
int val=-1,b[35];
memset(b,0,sizeof(b));
for(i=1;i<=n;i++)
if(mask&(1<<(i-1)))
{
val*=-1;
for(j=1;j<=k;j++)
b[j]=max(b[j],a[i][j]);
}
int sum=0;
for(j=1;j<=k;j++)
sum+=b[j];
if(sum>s)continue;
ans=(ans+C[s-sum+k][k]*val+mod)%mod;
}
g<<((C[s+k][k]-k*s-1-ans)%mod+mod)%mod;
return 0;
}