Cod sursa(job #1428643)

Utilizator robx12lnLinca Robert robx12ln Data 4 mai 2015 20:51:13
Problema Diamant Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<fstream>
#define DIM 45000
using namespace std;
ifstream fin("diamant.in");
ofstream fout("diamant.out");
int v[2*DIM];
int *p=v+DIM;
int i,n,m,k,j,X,sum;
int main(){
    fin>>n>>m>>X;
    for(i=1;i<=n;i++){
        for(j=1;j<=m;j++){
            v[++k]=i*j;
            sum+=i*j;
        }
    }
    p[0]=1;
    for(i=1;i<=k;i++){
        for(j=sum;j>=-sum;j--){
            if(p[j]!=0){
                if(v[i] +p[j]<=sum && v[i] +p[j]>=-sum){
                    p[ v[i] +p[j] ]++;
                    p[ v[i] +p[j] ]%=10000;
                }
            }
        }
        for(j=-sum;j<=sum;j++){
            if(p[j]!=0){
                if(-v[i] + p[j] <= sum   &&   -v[i] + p[j] >= -sum){
                    p[ -v[i] +p[j] ]++;
                    p[ -v[i] +p[j] ]%=10000;
                }
            }
        }
        p[0]--;
        p[0]%=10000;
    }
    fout<<p[X]%10000<<"\n";
    return 0;
}