Cod sursa(job #1276925)

Utilizator Master011Dragos Martac Master011 Data 26 noiembrie 2014 23:36:37
Problema Diamant Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<cstdio>
using namespace std;

FILE *in = fopen("diamant.in","r");
FILE *out = fopen("diamant.out","w");
const int Lm = 80205;
int v[Lm*2];
int fr[Lm*2];

int main (){
    int n,m,x; fscanf(in,"%d%d%d",&n,&m,&x);
    v[Lm]=1;
    int st=Lm,dr=Lm,add,st1,dr1;
    for(int i = 1 ; i <= n ; i++)
        for(int j = 1 ; j <= m ; j++){
            add=i*j;st1=st;dr1=dr;
            for(int k = st ; k <= dr ; k++){
                if(v[k]){
                    fr[k+add]+=v[k]; dr1=dr1>k+add?dr1:k+add;
                    fr[k-add]+=v[k]; st1=st1<k-add?st1:k-add;
                }
            }
            st=st1;dr=dr1;
            for(int k = st ; k <= dr ; k++){
                if(fr[k]){
                    v[k]+=fr[k];
                    fr[k]=0;
                }
            }
        }
    fprintf(out,"%d\n",v[x+Lm]);
    return 0;
}