Pagini recente » Cod sursa (job #1319827) | Cod sursa (job #1928500) | Cod sursa (job #2546694) | Cod sursa (job #773499) | Cod sursa (job #320635)
Cod sursa(job #320635)
#include<stdio.h>
#define MAX(a,b)((a)>(b)?(a):(b))
#define MIN(a,b)((a)<(b)?(a):(b))
#define M 3210121
#define mod(a)(((a)>=M)?((a)-M):(a))
int a[10100][25],S,n,K,s,Sum[10100][25],E[25][35],v[25][35];
void solv(int x,int y,int z){
int i,j,sum;
for(i=x;i<=n;i++){
sum=0;
for(j=1;j<=K;j++){
v[z+1][j]=MAX(v[z][j],E[i][j]);
sum+=v[z+1][j];
}
if (S-sum >=0){
s=mod(s+Sum[S-sum][K]*y+M);
while(s>=M)
s=mod(s);
}
solv(i+1,-1*y,z+1);
}
}
int main(){
int i,j;
freopen("cowfood.in","r",stdin);
freopen("cowfood.out","w",stdout);
scanf("%d%d%d",&K,&S,&n);
a[0][0]=Sum[0][0]=1;
for(i=1;i<=S;i++)
Sum[i][0]=1;
for(j=1;j<=K;j++){
a[0][j]=Sum[0][j]=1;
for(i=1;i<=S;i++)
a[i][j]=Sum[i][j-1],
Sum[i][j]=(Sum[i-1][j]+a[i][j])%M;
}
for(i=1;i<=n;i++)
for(j=1;j<=K;j++)
scanf("%d",E[i]+j);
s=0;
for(i=2;i<=S;i++){
s=mod(s+a[i][K]-K+M);
while(s>=M)
s=mod(s);
}
solv(1,-1,0);
printf("%d\n",s);
fclose(stdin);
fclose(stdout);
return 0;
}