Cod sursa(job #2338820)

Utilizator triscacezarTrisca Vicol Cezar triscacezar Data 7 februarie 2019 20:52:08
Problema Cowfood Scor 28
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#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;
}