Pagini recente » Cod sursa (job #580608) | Cod sursa (job #468314) | Cod sursa (job #3167194) | Cod sursa (job #1445199) | Cod sursa (job #1717000)
#include <iostream>
#include<fstream>
using namespace std;
//pinex pt smekery:*
const int mod=3210121;
long long a[25][35],p,tot,sum,s,comp[35];
int i,j,k,x,fix,n,grd;
bool dontcare[25],ok;
int main()
{
ifstream f("cowfood.in");
ofstream g("cowfood.out");
f>>k>>s>>n;
for(i=1;i<=n;i++)
{
sum=0;
for(j=1;j<=k;j++)
{
f>>a[i][j];
sum+=a[i][j];
}
if(sum>s) dontcare[i]=1;
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i!=j)
{
ok=1;
for(x=1;x<=k;x++)
{
if(a[i][x]>a[j][x]) ok=0;
}
if(ok==1) dontcare[i]=1;
}
fix=(1<<n)-1;
for(i=1;i<=fix;i++)
{
for(x=1;x<=k;x++) comp[x]=s+1;
grd=0;
for(j=0;j<n;j++)
{
if((i&(1<<j))&&dontcare[j+1]==0)
{
grd++;
for(x=1;x<=k;x++)
if(a[j+1][x]<comp[x]) comp[x]=a[j+1][x];
}
}
p=1;
for(x=1;x<=k;x++)
{
p*=comp[x];
p%=mod;
}
p-=1;
if(p<0) p+=mod;
if(grd%2==0) {tot-=p;if(tot<0) tot+=mod;}
else {tot+=p;if(tot>=mod) tot-=mod;}
}
g<<tot;
return 0;
}