Cod sursa(job #1657207)

Utilizator fanache99Constantin-Buliga Stefan fanache99 Data 20 martie 2016 11:51:35
Problema Diamant Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<cstdio>
#include<cstring>
using namespace std;
int a[100000],b[100000];
int main(){
	freopen("diamant.in","r",stdin);
	freopen("diamant.out","w",stdout);
    int n,m,k,i,j,t,x,limit;
	scanf("%d%d%d",&n,&m,&k);
	limit=n*(n+1)*m*(m+1)/4;
	if((k>=0&&limit<k)||(limit+k<0)){
        printf("0");
        return 0;
	}
	if(limit==k){
        printf("1");
        return 0;
	}
    else{
        a[44100]=1;
        for(i=1;i<=n;i++)
            for(j=1;j<=m;j++){
                for(t=88200;t>=0;t--)
                    b[t]=a[t];
                for(t=88200;t>=0;t--){
                    a[t]=b[t];
                    if(t+i*j<=88200)
                        a[t]+=b[t+i*j];
                    if(t-i*j>=0)
                        a[t]+=b[t-i*j];
                    a[t]%=10000;
                }
            }
        printf("%d\n",a[k+44100]);
    }
	return 0;
}