Cod sursa(job #1631272)

Utilizator avaspAva Spataru avasp Data 5 martie 2016 14:21:33
Problema Diamant Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<cstdio>
using namespace std;
int n,m,x,v[401],cate,g[88206];
int marc[88206];
int main(){
    freopen("diamant.in","r",stdin);
    freopen("diamant.out","w",stdout);
    scanf("%d%d%d",&n,&m,&x);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            v[++cate]=i*j;
    for(int i=1;i<=cate;i++){
        for(int s=0;s<=88200;s++)
            marc[s]=0;
        for(int s=88200;s>=0;s--)
            if(g[s]!=0&&s+v[i]<=88200){
                g[s+v[i]]=(g[s+v[i]]+g[s])%10000;
                marc[s+v[i]]=g[s];
                }
        for(int s=0;s<=88200;s++){
            if(g[s]!=0&&s-v[i]>=0)
                g[s-v[i]]=(g[s-v[i]]+g[s]-marc[s])%10000;
        }
        g[44100+v[i]]++;
        g[44100-v[i]]++;
    }
    printf("%d",g[44100+x]);
    return 0;
}