Cod sursa(job #1706251)

Utilizator andrei20003Ionescu Andrei andrei20003 Data 21 mai 2016 23:20:32
Problema Diamant Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 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;