Cod sursa(job #1190799)

Utilizator buzu.tudor67Tudor Buzu buzu.tudor67 Data 25 mai 2014 17:54:01
Problema Diamant Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2013 Semestrul 2 Marime 0.84 kb
#include<fstream>
using namespace std;
ifstream fi("diamant.in");
ofstream fo("diamant.out");

const int ro = 10000;
const int smax = 44101;
int a[2][2*smax],linie;
int i,j,k,n,m,x,vmax;

int modul(int x){
    if(x<0) return(-x);
    else return x;
}

int main(){
    fi>>n>>m>>x;
    vmax=(n*(n+1)*m*(m+1))/4;//suma maxima pe care o pot obtine
    
    if(modul(x)>vmax) fo<<"0";
    else{
         a[0][0]=1; linie=1;
         
         for(i=1;i<=n;i++)
           for(j=1;j<=m;j++)
              {
               for(k=0;k<=vmax;k++)
               a[linie][k]=(a[linie^1][k]+a[linie^1][k+i*j]+a[linie^1][modul(k-i*j)])%ro;
               
               linie^=1; 
              }
              
         linie^=1; 
         fo<<a[linie][modul(x)];     
        }
    
    fi.close();
    fo.close();
    return 0;
}